CreateSnapshot should raise an exception if unsussesful. RefreshTheDatabase should do the same and also ensure tables are not "refreshed" if snapshot was unsuccessful!!!
Finally, it would be great if snapshot was faster or instead a "BeginTrans / Rollback" could be implemented.