您现在的位置>>.Net中文社区>>数据库

清除某个数据库的所有数据库连接的存储过程

浏览量: 作者:佚名 来源:互联网

在我们利用代码还原或者删除数据库的时候,经常碰到因为还存在数据库连接而拒绝操作的情况,我为此特意写了一个存储过程用来清除某个数据库的所有数据库链接。
代码如下:

  1. CREATE PROC L_spClearDbConnections 
  2.     @DbName    VARCHAR(30) 
  3. AS 
  4. --清除某个数据库的所有数据库连接 
  5. --RickyLin 2007-11-1 
  6. DECLARE @SPID    INT 
  7. DECLARE @SqlForClear    NVARCHAR(100) 
  8.  
  9. DECLARE curID CURSOR FORWARD_ONLY READ_ONLY FOR ( 
  10.     SELECT SPID 
  11.     FROM Master.dbo.SysProcesses 
  12.     WHERE DB_Name(DBID) = @DbName) 
  13. OPEN curID 
  14. FETCH NEXT FROM curID INTO @SPID 
  15. WHILE @@Fetch_Status = 0 
  16. BEGIN 
  17.     SET @SqlForClear = N'KILL ' + Cast(@SPID AS NVARCHAR(10)) 
  18.     EXEC sp_ExecuteSql @SqlForClear 
  19.     IF @@Error = 0 
  20.         PRINT '已清除连接:' + Cast(@SPID AS VARCHAR(10)) 
  21.     FETCH NEXT FROM curID INTO @SPID 
  22. END 
  23. CLOSE curID 
  24. DEALLOCATE curID 
  25. PRINT '对数据库“' + @DbName + '”的连接清除操作完毕' 
本站部份资源来于互联网,只供学习之用,不得用于商业,如有侵犯版权请联系告知,本站将第一时间删除!
站长QQ:373638128 邮箱:navy1015@126.com
copyright © 2008 .Net中文社区 ASPXCS.NET™.All Rights Reserved 滇ICP备08102132号