Folgendes SQL Script killt ALLE Prozesse die mit einer bestimmten SQL-Datenbank verbunden sind und schaltet die Datenbank offline.
Da ich gerade nicht weiß wie man einen Datenbank namen als Objekt (DECLARE .. database) definiert muss man den Datenbanknamen zweimal angeben, einmal oben bei “SET @db..” und einmal unten bei “ALTER DATABASE”.
USE [master]
DECLARE @spid int
DECLARE @db varchar(128)
SET @db = '--DatenbankName--'
DECLARE CUR CURSOR FOR
SELECT spid FROM sysprocesses WHERE dbid = DB_ID(@db) AND hostname <> '' AND spid <> @@SPID
OPEN CUR
FETCH NEXT FROM CUR INTO @spid
WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE ('KILL ' + @spid)
FETCH NEXT FROM CUR INTO @spid
END
CLOSE CUR
DEALLOCATE CUR
SELECT @db AS 'DB', DATABASEPROPERTYEX (@db, 'Status') AS 'State before'
ALTER DATABASE --DatenbankName-- SET OFFLINE
SELECT @db AS 'DB', DATABASEPROPERTYEX (@db, 'Status') AS 'State after'
Letzte Kommentare