zoukankan      html  css  js  c++  java
  • SQL Server 中断开连接到指定数据库的所有连接

    常用的情形是在部署测试数据库时需要通过SQL代码自动重新创建数据库,在删除的时候往往会发生错误,错误信息一般会指出目前有用户连接到这个数据库上,因此不能删除.

     

    实现的方式是通过查询指定数据库中活跃的 SPID, 然后一一删除.

     

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    
    USE MASTER
    GO
    
    IF OBJECT_ID('dbo.USP_KillSPID','P')IS NOT NULL
    DROP PROCEDURE dbo.USP_KillSPID
    GO
    
    CREATE PROCEDURE dbo.USP_KillSPID
    @DatabaseName VARCHAR(255)
    AS
    
    DECLARE @SPID NVARCHAR(255)
    DECLARE curDBLogin CURSOR FOR
    SELECT CAST(SPID AS VARCHAR(255)) AS SPID
    FROM MASTER..sysprocesses
    WHERE dbid = DB_ID(@DatabaseName)
    
    OPEN curDBLogin
    FETCH NEXT FROM curDBLogin INTO @SPID
    
    WHILE @@FETCH_STATUS = 0
       BEGIN
          IF @SPID <> @@SPID
              EXEC('KILL '+ @SPID )
          FETCH NEXT FROM curDBLogin INTO @SPID
       END
    
    CLOSE curDBLogin
    DEALLOCATE curDBLogin
    GO
    
    -- Kill logins of database
    EXEC dbo.USP_KillSPID 'CommonControlDB' 
    
    -- Drop itself
    DROP PROCEDURE dbo.USP_KillSPID

     

     

  • 相关阅读:
    TUN/TAP区别
    从日志文件解决ArcGIS Server性能低下问题的步骤(1)
    java异常
    Maven
    前车之鉴-web篇
    图论复习总结
    奇(qi)谋(ji)巧(yin)计(qiao)
    莫比乌斯反演呓语
    学习后缀数组笔记
    浅读叶青学长竞赛学习知识目录
  • 原文地址:https://www.cnblogs.com/biwork/p/3242016.html
Copyright © 2011-2022 走看看