2014-05-19 2 views

Antwort

7

Nimm es zuerst offline. Der Dialog dafür ermöglicht eine Force-Option. Dann können Sie es sicher lösen.

+1

Ich habe festgestellt, Sie können es nicht sogar offline nehmen, wenn Menschen mit der Datenbank verbunden sind, es sei denn, Sie trennen sie, indem Sie Ihre Datenbank im Einzelbenutzermodus erhalten. –

+1

[Savin 'ya ein Google] (http://blog.sqlauthority.com/2010/04/24/sql-server-t-sql-script-to-take-database-offline-take-database-online/) : 'ALTER DATABASE [myDB] OFFLINE MIT ROLLBACK IMMEDIATE EINSTELLEN 'und' ALTER DATABASE [myDB] SET ONLINE' – ruffin

+0

Der Dialog zum Offline-Ausführen einer Datenbank ist nicht interaktiv. Es versucht es einfach, ohne Sie zuerst zu fragen, und Abbrechen funktioniert nicht. Und es kann lange dauern, bis es scheitert. Wenn Sie die Datenbank trennen, gibt es stattdessen eine Option zum Löschen der aktuellen Sitzungen. –

9

Trennen Sie alle anderen Benutzer zu Ihrer Datenbank

ALTER DATABASE [YourDbName] 
SET SINGLE_USER WITH ROLLBACK IMMEDIATE; 

Trennen Sie SSMS Verbindungen zur Datenbank

Wenn Sie der einzige Benutzer mit einer Datenbank und wollen, sind alle um die Verbindung trennen von Ihnen in SSMS gemacht können Sie eine der Query windows öffnen auf SSMS und Rechtsklick und siehe unten:

enter image description here

1

Manuell (und damit mit etwas Aufwand, programmatisch) können Sie den Befehl KILL verwenden, um offene Verbindungen zur Datenbank summarisch zu schließen.

Identifizieren, welche Verbindungen zu schließen, das ist jetzt der schwierige Teil. Beginnen Sie mit den Systemprozeduren SP_WHO und SP_WHO2, um manuell zu ermitteln, welche Verbindungen welche Datenbanken verwenden. Die Verwendung und Analyse dieser Prozeduren kann dazu führen, dass Systemobjekte sys.processes, sys.dm_exec_sessions und eine Menge anderer referenziert werden, gefolgt von einem eventuellen Verständnis von SPIDs und einer unvermeidlichen respektvollen Abscheu vor Verbindungspools.

Alle diese werden detailliert in SQL-Onlinedokumentation behandelt. Es ist der Beginn eines ziemlich umfangreichen Labyrinths, und wie weit du dich hineinsteigst, hängt von deinen ultimativen Zielen ab.

+0

Diese Methode kann ein echter Schmerz sein. Vor ein paar Monaten versuchte ich, eine Datenbank offline zu schalten, aber die Anwendung öffnete immer neue Verbindungen zur Datenbank. Egal, wie oft ich die Prozessanwendung beendet habe, habe ich eine neue geöffnet. Ich benutze den Einzelbenutzer-Modus, um zu verhindern, dass die Anwendung neue Verbindungen öffnet, da ich der einzige Benutzer bin, der damit verbunden ist. –

+0

Erzähl mir davon. Ich habe eine Routine, die alle offenen Verbindungen für eine bestimmte Datenbank umläuft und versucht, alle offenen Verbindungen zu beenden. Wenn alle geschlossen sind, führt sie ein übergebenes Skript (in der Regel sp_detachdb) aus. Wenn nach 10 Durchgängen nicht alle Verbindungen geschlossen werden können, gab es auf. DBA-Verwendung natürlich nur! –

Verwandte Themen