Zapewne każdy z administratorów baz danych spotkał się z problemem – brakiem możliwości wykonania jakiejś operacji na bazie danych z powodu otwartych połączeń. Serwer zwraca wtedy komunikat w stylu „database is in use
Z pomocą przychodzi prosty skrypt napisany w języku SQL, który „uwalnia” bazę danych od wszystkich zainicjowanych połączeń.
W skrypcie należy tylko zmienić nazwę bazy danych, w miejscu opatrzonym komentarzem.
USE master
GO
SET NOCOUNT ON
DECLARE @DBName varchar(50)
DECLARE @spidstr varchar(8000)
DECLARE @ConnKilled smallint
SET @ConnKilled=0
SET @spidstr = ''
Set @DBName = 'test'--wpisz nazwę bazy danych
IF db_id(@DBName) < 4
BEGIN
PRINT 'Connections to system databases cannot be killed'
RETURN
END
SELECT @spidstr=coalesce(@spidstr,',' )+'kill '+convert(varchar, spid)+ '; '
FROM master..sysprocesses WHERE dbid=db_id(@DBName)
IF LEN(@spidstr) > 0
BEGIN
EXEC(@spidstr)
SELECT @ConnKilled = COUNT(1)
FROM master..sysprocesses WHERE dbid=db_id(@DBName)
END
Koniec 🙂
Jeżeli pomogłem to ,a będę miał więcej energii na pisanie kolejnych ciekawych wpisów.