Script to kill all connections to a database (More than RESTRICTED_USER ROLLBACK)

后端 未结 14 1524
-上瘾入骨i
-上瘾入骨i 2020-11-28 17:28

I have a development database that re-deploy frequently from a Visual Studio Database project (via a TFS Auto Build).

Sometimes when I run my build I get this error:

14条回答
  •  孤城傲影
    2020-11-28 17:42

    You can use Cursor like that:

    USE master
    GO
    
    DECLARE @SQL AS VARCHAR(255)
    DECLARE @SPID AS SMALLINT
    DECLARE @Database AS VARCHAR(500)
    SET @Database = 'AdventureWorks2016CTP3'
    
    DECLARE Murderer CURSOR FOR
    SELECT spid FROM sys.sysprocesses WHERE DB_NAME(dbid) = @Database
    
    OPEN Murderer
    
    FETCH NEXT FROM Murderer INTO @SPID
    WHILE @@FETCH_STATUS = 0
    
        BEGIN
        SET @SQL = 'Kill ' + CAST(@SPID AS VARCHAR(10)) + ';'
        EXEC (@SQL)
        PRINT  ' Process ' + CAST(@SPID AS VARCHAR(10)) +' has been killed'
        FETCH NEXT FROM Murderer INTO @SPID
        END 
    
    CLOSE Murderer
    DEALLOCATE Murderer
    

    I wrote about that in my blog here: http://www.pigeonsql.com/single-post/2016/12/13/Kill-all-connections-on-DB-by-Cursor

提交回复
热议问题