如何关闭与DB的现有连接

Haz*_*Haz 43 sql sql-server

我想关闭与MS SQL Server的现有连接,以便我可以以编程方式对该数据库进行还原.

And*_*mar 67

这应该断开其他所有人,并让您成为唯一的用户:

alter database YourDb set single_user with rollback immediate
Run Code Online (Sandbox Code Playgroud)

注意:别忘了

alter database YourDb set MULTI_USER
Run Code Online (Sandbox Code Playgroud)

你做完之后!

  • 完成后别忘了"ALTER DATABASE YourDb SET MULTI_USER"! (16认同)
  • 我现在已经解决了这个问题。我读到 [here](https://dba.stackexchange.com/a/157921/65699) 使用以下语句可能对我的情况有所帮助:`Alter database your_db_name set OFFLINE with rollback立即` (3认同)

ley*_*ari 16

在还原向导中单击"关闭与目标数据库的现有连接"

在" 分离数据库"向导中,单击"删除连接"项.

  • 对于那些想知道为什么该选项并不总是可用的人,有一个解决方法。如果在执行任何其他操作之前转到选项选项卡并在还原对话框中执行任何其他操作之前选中“关闭现有连接”复选框,它似乎可以解决该选项变灰的问题。 (2认同)

Vin*_*nie 5

在这里找到它:http : //awesomesql.wordpress.com/2010/02/08/script-to-drop-all-connections-to-a-database/

DECLARE @dbname NVARCHAR(128)
SET @dbname = 'DB name here'
 -- db to drop connections 
DECLARE @processid INT 
SELECT  @processid = MIN(spid)
FROM    master.dbo.sysprocesses
WHERE   dbid = DB_ID(@dbname) 
WHILE @processid IS NOT NULL 
    BEGIN 
        EXEC ('KILL ' + @processid) 
        SELECT  @processid = MIN(spid)
        FROM    master.dbo.sysprocesses
        WHERE   dbid = DB_ID(@dbname) 
    END
Run Code Online (Sandbox Code Playgroud)

  • 谢谢亚伦的每周羞辱。它会杀死进程,但肯定不会优雅。 (3认同)
  • 这不是羞耻,而是关于向OP和未来的读者提供有价值的解决方案。如果解决方案存在弱点,我认为应该指出。 (3认同)