2

我需要使用 SMO 从 .NET 执行数据库还原。在还原之前,我将数据库设置为 RESTRICTED_USER WITH ROLLBACK IMMEDIATE 模式。这在测试/调试期间工作正常 - 所有用户都被删除。但是,当此代码在夜间作为自动化进程的一部分运行时,有时会出现以下异常:

Microsoft.SqlServer.Management.Common.ExecutionFailureException:执行 Transact-SQL 语句或批处理时发生异常。---> System.Data.SqlClient.SqlException:无法获得独占访问,因为数据库正在使用中。RESTORE DATABASE 异常终止

这里发生了什么事?谢谢!

4

1 回答 1

3

你能不做吗?

alter database <db_name> set single_user with rollback immediate

然后在备份后添加另一个 TSQL 步骤:

alter database <db_name> set multi_user

或者,要找出在夜间运行时可能发生的情况,请以某种方式捕获以下结果

EXEC sp_who2

这将向您显示当时连接的人。

于 2009-11-04T14:58:12.833 回答