因此,我有一个第三方供应商软件,我必须调用一个SQL代理作业来恢复我的数据库。因此,我的第一步是在单用户模式下设置数据库,第二步是调用软件启动恢复。问题是,软件需要很长时间才能真正启动恢复(通过网络来完成),因此另一个用户可以突然进入并接管数据库。
有没有办法将DB放在单用户模式下,然后立即抓取该连接?我尝试了几个"Select ()“,但我觉得这是从系统中获取的,而不是数据库。是否必须从数据库中的特定表中进行选择才能使其正常工作?
谢谢
发布于 2015-07-28 12:00:03
与其将数据库置于单一用户模式下,不如将数据库脱机放在另一个数据库的上下文中:
USE tempdb;
ALTER DATABASE DatabaseToRestore
SET OFFLINE WITH ROLLBACK IMMEDIATE;发布于 2015-07-28 12:04:59
使用“”选项和"-m“选项,该选项将SQL置于单个用户模式中。
这样,只有与给定名称匹配的应用程序才能连接并接受连接。显然,您需要确保正在执行还原的客户端进程有一个不同的名称!
有关各种Server启动选项的信息,请参见此处:https://msdn.microsoft.com/en-us/library/ms190737.aspx
此外,我的印象是,你必须是管理员才能在单一用户模式下进行连接,当然你的正常用户不应该这样做。如果我在这一点上错了,请有人纠正我!
https://stackoverflow.com/questions/31675518
复制相似问题