SQL Server语言 - 使用提交事务的功能测试进行备份/还原或回滚



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

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

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

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

有什么想法吗?

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

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

备份脚本

自动还原

最新更新