我需要使用SMO从.NET执行数据库还原。在还原之前,我将数据库设置为RESTRICTED_USER WITH ROLLBACK IMMEDIATE模式。这在测试/调试期间工作正常 - 所有用户都被删除。但是,当此代码作为夜间自动化过程的一部分运行时,有时会出现以下异常:
Microsoft.SqlServer.Management.Common.ExecutionFailureException:执行Transact-SQL语句或批处理时发生异常。 ---> System.Data.SqlClient.SqlException:无法获取独占访问权限,因为数据库正在使用中。 RESTORE DATABASE异常终止
这里发生了什么?谢谢!
答案 0 :(得分:3)
alter database <db_name> set single_user with rollback immediate
然后在备份后添加另一个TSQL步骤:
alter database <db_name> set multi_user
或者,为了找出夜间运行会发生什么,以某种方式捕获
的结果EXEC sp_who2
这将显示您当时连接的人。