SQL 数据库测试:如何捕获数据库状态以进行回滚

SQL 数据库测试:如何捕获数据库状态以进行回滚

我的开发环境中有一个 SQL 服务器 (MS SQL 2005)。我有一套单元测试,用于测试一些 .net 代码,这些代码将连接到数据库并执行一些操作。如果测试中的代码运行正常,那么数据库的状态应该与测试前相同(或相似)。

但是,我希望能够将数据库回滚到测试运行之前的状态。实现此目的的一种方法是使用事务以编程方式回滚每个测试操作,但编程起来既困难又繁琐;这很容易导致测试代码出错。

我希望能够自信地运行我的测试,并且知道如果它们破坏了我的表格,我可以快速恢复它们?

有什么好方法可以保存我的一个数据库及其表的快照,以便我可以轻松地将数据库恢复到测试之前的状态?

答案1

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

查看 MSDN 上的文档这里这里

答案2

如果你有 SQL Server 2008,那么你可以快照,运行所有测试,然后使用以下命令将数据库恢复到快照点:

 RESTORE DATABASE <database_name> FROM DATABASE_SNAPSHOT

相关内容