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

     

     

  • 相关阅读:
    MySql学习2
    Java学习:JDBC
    MySql学习
    Java学习:网络编程
    Java学习:反射
    Java学习:多线程(2)
    Java学习:多线程
    .net后台webclient用post方式发送文件和数据
    实用
    day&day
  • 原文地址:https://www.cnblogs.com/biwork/p/3242016.html
Copyright © 2011-2022 走看看