lac*_*dev 2 sql-server-2005 database-restore
我需要使用 SMO 从 .NET 执行数据库恢复。在恢复之前,我将数据库设置为 RESTRICTED_USER WITH ROLLBACK IMMEDIATE 模式。这在测试/调试期间工作正常 - 所有用户都被删除。但是,当此代码在夜间作为自动化过程的一部分运行时,有时会出现以下异常:
Microsoft.SqlServer.Management.Common.ExecutionFailureException:执行 Transact-SQL 语句或批处理时发生异常。---> System.Data.SqlClient.SqlException: 由于数据库正在使用中,无法获得独占访问权限。RESTORE DATABASE 异常终止
这里发生了什么事?谢谢!
你能不做吗?
alter database <db_name> set single_user with rollback immediate
Run Code Online (Sandbox Code Playgroud)
然后在备份后添加另一个 TSQL 步骤:
alter database <db_name> set multi_user
Run Code Online (Sandbox Code Playgroud)
或者,要找出在夜间运行时可能发生的情况,请以某种方式捕获结果
EXEC sp_who2
Run Code Online (Sandbox Code Playgroud)
这会告诉您当时谁已连接。