每次运行单元测试时,我想创建一个数据库快照并将数据库恢复到该快照。我能够创建快照,但在恢复时遇到了以下错误:
消息 5070,级别 16,状态 2,第 1 行
数据库“ImportData”正在被其他用户使用,因此无法更改数据库状态。消息 3013,级别 16,状态 1,第 1 行
恢复数据库异常终止。
以下是创建和还原数据库到快照的 SQL 查询:
创建快照:
CREATE DATABASE Data_SShot
ON (NAME=Data,
FILENAME='C:\Snapshot\DataSnapshot.ss'),
(NAME=Data_Data1,
FILENAME='C:\Snapshot\Data1Snapshot.ss'),
(NAME=Data_Index1,
FILENAME='C:\Snapshot\DataIndexSnapshot.ss')
AS SNAPSHOT OF Data
恢复快照
use master
go
RESTORE DATABASE Data
FROM DATABASE_SNAPSHOT = 'Data_SShot'
它说明了:
当其他用户正在使用数据库时,无法更改数据库状态
如何解决这个问题?我在使用.NET(C#)进行操作。如何关闭连接以成功运行RESTORE DATABASE
?
我希望在测试套件中的每个测试中都能够创建快照并稍后还原到该快照的整个过程。