SQL Server:将数据库模式设置为RESTRICTED_USER WITH ROLLBACK IMMEDIATE并不总是丢弃所有连接

时间:2009-11-04 14:25:54

标签: 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异常终止

这里发生了什么?谢谢!

1 个答案:

答案 0 :(得分:3)

你能做到吗?

alter database <db_name> set single_user with rollback immediate

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

alter database <db_name> set multi_user

或者,为了找出夜间运行会发生什么,以某种方式捕获

的结果
EXEC sp_who2

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