Mittendrin.

Zurück

Flurfunk der eXperts.

Hier erfahren Sie mehr über eXperts, Technologien und das wahre Leben in der SDX.

Close existing Connections by SQL Script

08.07.201508:00 Uhr , Alexander Kabisch

Beim Löschen einer Datenbank kann man “close existing connections” auswählen. Beim Restore oder Detach kann man es leider nicht, hier bekommt man nach längerem Warten eine Fehlermeldung.

Die wohl bekannteste Möglichkeit Verbindungen zuschließen bietet der Activity Monitor. Hier sieht man alle Prozesse, diese kann man filtern und den gewünschten schließen. Leider nur einen Prozess nach dem anderen. Bei zu vielen Prozessen braucht man unter Umständen recht lange und läuft Gefahr dass in der Zwischenzeit wieder neue Verbindungen erstellt wurden.

ActivityMon1

ActivityMon2

Man kann aber auch per Script alle Verbindungen außer der eigenen schließen, indem man KILL verwendet:

   1: DECLARE @dbName AS VARCHAR(200) = 'xyz'; -- DB_NAME()

   2:  

   3: DECLARE @kill AS VARCHAR(max) = '';

   4: SELECT @kill = @kill + 'KILL ' + STR([SPID]) + ';'

   5: FROM master..sysprocesses 

   6: WHERE [DBID] = DB_ID(@dbName)

   7: AND [SPID] <> @@SPID;

   8:  

   9: EXEC(@kill);

Leider erlebe ich es oft, dass die Testumgebung blockiert ist und ein Update auf eine neue Version verhindert. Dann kommt man leider nicht dran vorbei alle Verbindungen zu schließen.

 

Ich persönlich lege solche Scripte ungern in der Datenbank ab, da sie meist in Produktion nicht benötigt werden. Besser finde ich es sie als Toolset zu sammeln. Dies kann man zusammen mit den Sourcen des Projektes oder als Teil des Projektes einchecken.

Tags: SQL Server

0 Kommentare
Dein Kommentar wartet auf Freischaltung.

Artikel kommentieren

Zurück

Tag Cloud


Kontakt aufnehmen


Anrufen

Gerne beantworten wir Ihre Fragen in einem persönlichen Gespräch!


Kontakt aufnehmen

Schreiben Sie uns eine E-Mail mit Ihren Fragen und Kommentaren!