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
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值