TSQL--删除正在运行的数据库

DECLARE @dbName NVARCHAR(200);
SET @dbName=DB1_SNAP
 
BEGIN TRY
--=====================================
--查找当前数据库所有连接并删除
 
DECLARE @spid INT;
DECLARE @tempSQL NVARCHAR(200);
--判断临时表是否存在,存在则删除
IF(OBJECT_ID(tempdb.dbo.#temp,U) IS NOT NULL)
BEGIN
DROP TABLE #temp
END
--查找活动的SPID
SELECT spid INTO #temp
FROM master.sys.sysprocesses
WHERE dbid =DB_ID(@dbName);
--循环并删除所有活动SPID
WHILE((SELECT COUNT(1) FROM #temp)>0)
BEGIN
   SELECT TOP(1) @spid=spid FROM #temp;
   SET @tempSQL=KILL +CAST(@spid AS VARCHAR(10));
   PRINT @tempSQL;
   EXEC(@tempSQL);
   DELETE FROM #temp WHERE spid=@spid;
END
DROP TABLE #temp
--========================================
--删除数据库
EXEC(DROP DATABASE +@dbName);
PRINT 删除成功;
END TRY
BEGIN CATCH
PRINT 执行出错,错误信息:
PRINT ERROR_MESSAGE()
END CATCH
 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。