Usunięcie wszystkich połączeń do bazy danych.

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 Postaw mi kawę na buycoffee.to ,a będę miał więcej energii na pisanie kolejnych ciekawych wpisów.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *