it-swarm.com.de

Festgefahrene Aufgabe im Managementstudio, wie gehen Sie damit um?

Nachdem Sie im Management Studio auf "Datenbank offline schalten" geklickt haben, bleibt diese Nachricht hängen und wird nicht geschlossen, wenn Sie auf "Schließen" klicken.

(https://i.imgur.com/KD6AROv.png

Was ist ein guter Weg, um mit solchen festgefahrenen Jobs im Managementstudio umzugehen? Können Sie sie über den Aktivitätsmonitor töten? Sollte ich suchen, durch welchen Prozess dieser Job nicht mehr ausgeführt werden kann, und ihn beenden?

13
A_V

Ich würde sagen, verwenden Sie niemals das Ding "Offline nehmen" in der GUI, es sei denn, Sie wissen, dass die Datenbank nicht verwendet wird. Durch irgendetwas. Das ist schwer zu wissen, ohne etwas Beinarbeit zu leisten. Warum also nicht dieses Skript irgendwo speichern und immer verwenden?

USE [master];
GO
ALTER DATABASE $dbname$ SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE $dbname$ SET OFFLINE;

Und dann natürlich das Gegenteil:

ALTER DATABASE $dbname$ SET ONLINE;
GO
ALTER DATABASE $dbname$ SET MULTI_USER;

Der Grund, warum Sie es zuerst auf SINGLE_USER Setzen müssen, besteht darin, vorhandene Benutzer auszuschalten (es gibt eine Option, dies im Dialogfeld "Trennen" zu tun, nicht jedoch im Dialogfeld "Offline nehmen"), da SQL Server exklusiven Zugriff auf benötigt die Datenbank, um sie offline zu schalten. Jetzt möchten Sie vielleicht trotzdem zusätzliche Arbeit leisten, um zu sehen, wer die Datenbank derzeit verwendet, als ob Sie dies mitten in einem großen Sicherungsvorgang oder einem ETL-Job tun oder was Sie haben, das könnte problematisch sein.

[~ # ~] edit [~ # ~] : Ich habe auf Connect einen Vorschlag dazu eingereicht (siehe Connect # 2687832 =) und haben es auch an Trello gepostet (abgelegt unter "Object Explorer").

13
Aaron Bertrand

Wenn Sie sich bereits in einer hängenden Situation befinden, vergessen Sie nicht, dass Sie mit nach offenen Verbindungen auf dem Server suchen können

sp_who2  

in einer anderen Datenbank, z. B. master.
Scannen Sie die Ergebnisse nach Daten, bei denen es sich um die Datenbank handelt, die Sie offline schalten möchten.
Notieren Sie den Spid-Spaltenwert (Prozess-ID) dieser Zeilen.

Lauf nacheinander

kill  ##

dabei ist "##" die Spid.

Stellen Sie sicher, dass diese Prozesse nicht wichtig sind, damit sie ausgeführt werden. Sie werden beendet, ohne den letzten Befehl zu beenden und ohne Vorwarnung.

9
Mike M