SQL数据库testing:如何捕获我的数据库的状态回滚

我在我的开发环境中有一个SQL服务器(MS SQL 2005)。 我有一些unit testing的一些.NET代码将连接到数据库并执行一些操作。 如果被testing的代码工作正常,那么数据库应该与testing前的状态相同(或类似)。

不过,我希望能够在testing运行之前将数据库回滚到状态。 这样做的一种方法是以编程方式使用事务来回滚每个testing操作,但是这样做难于编程; 这很容易导致testing代码中的错误。

我想能够自信地运行我的testing,知道如果他们摧毁我的表,我可以快速恢复他们?

什么是保存我的一个数据库与其表的快照的好方法,以便我可以轻松地恢复数据库的状态从testing之前?

为什么不使用Transact-SQL备份和恢复例程?

看看这里和这里的 MSDN文档。

如果你有sql server 2008,那么你可以创build一个快照 ,运行所有的testing,然后使用以下命令将数据库恢复到快照点:

RESTORE DATABASE <database_name> FROM DATABASE_SNAPSHOT