SQL Server - 备份/还原或回滚功能测试提交事务

时间:2017-01-17 17:42:37

标签: sql-server transactions

我有一堆功能测试,我从H2转换到SQL Server。在运行一些测试之间,我会(自动)备份数据库,从数据库中删除所有内容,并使用SQL恢复数据库。

使用标准的BACKUP DATABASE和RESTORE DATABASE命令使用SQL Server进行备份/还原无法正常工作,因为为了还原,我需要调用ALTER DATABASE mydatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE,这会终止测试服务器和数据库之间的连接。

我想创建一个保存点,然后回滚到它,但回滚不起作用,我假设因为API中的事务在创建保存点和回滚。我在功能测试代码中将autocommit设置为false,并且我没有收到任何自动提交错误。

一个想法是通过删除所有表并恢复它们来恢复使用SQL。不过,我不知道该怎么做。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您应该能够在不中断连接的情况下备份数据库。您还可以将数据库还原为其他名称,这将允许您进行测试而不是终止连接。

至于备份和自动还原,这已经公开编写。

Backup scripts

Automated restore