![SQL 数据库测试:如何捕获数据库状态以进行回滚](https://linux22.com/image/516375/SQL%20%E6%95%B0%E6%8D%AE%E5%BA%93%E6%B5%8B%E8%AF%95%EF%BC%9A%E5%A6%82%E4%BD%95%E6%8D%95%E8%8E%B7%E6%95%B0%E6%8D%AE%E5%BA%93%E7%8A%B6%E6%80%81%E4%BB%A5%E8%BF%9B%E8%A1%8C%E5%9B%9E%E6%BB%9A.png)
我的开发环境中有一个 SQL 服务器 (MS SQL 2005)。我有一套单元测试,用于测试一些 .net 代码,这些代码将连接到数据库并执行一些操作。如果测试中的代码运行正常,那么数据库的状态应该与测试前相同(或相似)。
但是,我希望能够将数据库回滚到测试运行之前的状态。实现此目的的一种方法是使用事务以编程方式回滚每个测试操作,但编程起来既困难又繁琐;这很容易导致测试代码出错。
我希望能够自信地运行我的测试,并且知道如果它们破坏了我的表格,我可以快速恢复它们?
有什么好方法可以保存我的一个数据库及其表的快照,以便我可以轻松地将数据库恢复到测试之前的状态?
答案1
答案2
如果你有 SQL Server 2008,那么你可以快照,运行所有测试,然后使用以下命令将数据库恢复到快照点:
RESTORE DATABASE <database_name> FROM DATABASE_SNAPSHOT