在单用户模式下建立连接

时间:2015-07-28 11:52:59

标签: sql sql-server

所以我有一个第三方供应商软件,我必须在SQL代理作业中调用它来恢复我的数据库。所以我的第一步是将数据库设置为单用户模式,我的第二步是调用软件以启动恢复。问题是,软件需要很长时间才能实际启动恢复(它通过网络完成所有操作),而另一个用户可以俯冲并接管数据库。

有没有办法将数据库置于单用户模式,然后立即获取该连接?我试过几个"选择Getdate()"但我觉得这是从系统,而不是数据库。我是否必须从数据库中的特定表中进行选择才能使其正常工作?

由于

2 个答案:

答案 0 :(得分:2)

不是将数据库置于单用户模式,而是在另一个数据库的上下文中使数据库脱机:

USE tempdb;
ALTER DATABASE DatabaseToRestore
    SET OFFLINE WITH ROLLBACK IMMEDIATE;

答案 1 :(得分:0)

使用“客户端应用程序名称”选项以及将SQL置于单用户模式的“-m”选项。

这样只有与给定名称匹配的应用程序才能连接并获取连接。显然,您需要确保正在执行还原的客户端进程具有不同的名称!

有关各种SQL Server启动选项的信息,请参阅此处:https://msdn.microsoft.com/en-us/library/ms190737.aspx

此外,我的印象是你必须是一个管理员才能以单用户模式连接,当然你的普通用户不应该这样。如果我在这一点上错了,请有人纠正我!