SQL Server 清除数据库上正在使用的连接的存储过程

03:29下午 三月 23, 2008 in category 工作 by 会飞的老虎

自己保留下,将来备用。原文地址
CREATE PROCEDURE dbo.clearDBUsers 
    @dbName SYSNAME 
AS 
BEGIN 
    SET NOCOUNT ON 
 
    DECLARE @spid INT, 
        @cnt INT, 
        @sql VARCHAR(255) 
 
    SELECT @spid = MIN(spid), @cnt = COUNT(*) 
        FROM master..sysprocesses 
        WHERE dbid = DB_ID(@dbname) 
        AND spid != @@SPID 
 
    PRINT 'Starting to KILL '+RTRIM(@cnt)+' processes.' 
     
    WHILE @spid IS NOT NULL 
    BEGIN 
        PRINT 'About to KILL '+RTRIM(@spid) 
 
        SET @sql = 'KILL '+RTRIM(@spid) 
        EXEC(@sql) 
 
        SELECT @spid = MIN(spid), @cnt = COUNT(*) 
            FROM master..sysprocesses 
            WHERE dbid = DB_ID(@dbname) 
            AND spid != @@SPID 
 
        PRINT RTRIM(@cnt)+' processes remain.' 
    END 
END 
GO

评论[0]

评论:

发表一条评论:
  • HTML语法: 启用