اسکریپت حذف تمامی connection های فعال پایگاه داده
گاهی اوقات در حین انجام عملیات روی پایگاه داده با پیغام زیر مواجه می شوید:
ALTER DATABASE failed because a lock could not be placed on database 'MyDB'. Try again later.
ALTER DATABASE statement failed.
Cannot drop database "MyDB" because it is currently in use.
برای رفع این اشکال می توانید از اسکریپت زیر برای جداسازی اتصالهای فعال از پایگاه داده استفاده فرمائید. (مراقب باشید که دیتا و اطلاعات پایگاه داده را از دست ندهید. گاهی اوقات قطع اتصال موجب از دست رفتن برخی دیتا خواهد شد)
SQL Server 2012 و بالاتر
1
2
3
4
5
6
7
|
USE [master];
DECLARE @kill varchar(8000) = '';
SELECT @kill = @kill + 'kill ' + CONVERT(varchar(5), session_id) + ';'
FROM sys.dm_exec_sessions
WHERE database_id = db_id('MyDB')
EXEC(@kill);
|
MS SQL Server 2000, 2005, 2008
1
2
3
4
5
6
7
|
USE master;
DECLARE @kill varchar(8000); SET @kill = '';
SELECT @kill = @kill + 'kill ' + CONVERT(varchar(5), spid) + ';'
FROM master..sysprocesses
WHERE dbid = db_id('MyDB')
EXEC(@kill);
|