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

发布于 2024-08-10 04:35:15 字数 388 浏览 9 评论 0原文

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

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

这里发生了什么?谢谢!

I need to perform a restore of database from .NET using SMO.Prior to the restore I set the database into RESTRICTED_USER WITH ROLLBACK IMMEDIATE mode. This works fine during testing/debugging - all users are dropped. However, when this code is run as part of an automated process at night, sometimes I get the following exception:

Microsoft.SqlServer.Management.Common.ExecutionFailureException: An exception occurred while executing a Transact-SQL statement or batch. ---> System.Data.SqlClient.SqlException: Exclusive access could not be obtained because the database is in use. RESTORE DATABASE is terminating abnormally

What's happening here? Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱人如己 2024-08-17 04:35:15

你能不做吗?

alter database <db_name> set single_user with rollback immediate

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

alter database <db_name> set multi_user

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

EXEC sp_who2

Which”的结果,该结果将显示当时谁已连接。

Can you not do;

alter database <db_name> set single_user with rollback immediate

Then add another TSQL step after the backup:

alter database <db_name> set multi_user

Alternatively, to find out what could be happening as this is running at night, somehow capture the results of

EXEC sp_who2

Which would show you who is connected at the time.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文