Welche Abfrage muss ich schreiben, um zu wissen, ob die Datenbank verwendet wird oder nicht? Ich habe versucht, folgende Abfrage
SELECT
name
FROM
sys.databases
WHERE
state != 0;
aber es funktioniert nicht.
Ich möchte überprüfen, ob dort keine offene Verbindung zu dieser Datenbank besteht und keine Abfrage für diese Datenbank ausgeführt werden soll
sql-server
MANISH KUMAR CHOUDHARY
quelle
quelle
Antworten:
Obwohl es viele Antworten gibt, möchte ich eine Antwort posten, die nicht technisch ist, aber Ihnen sicherlich sagen würde, ob die Datenbank verwendet wird oder nicht. IMHO gibt es keinen PERFEKTEN und ABSOLUTEN Weg. Was Sie tun können, ist
Sie müssen alle oben genannten Methoden verwenden, insbesondere eine von Remus vorgeschlagene, um zu sehen und eine Vorstellung davon zu bekommen, wann zuletzt darauf zugegriffen wurde.
Angenommen, Sie möchten in einem großen Unternehmen herausfinden, ob Datenbank A verwendet wird oder nicht und wer sie verwendet. Schreiben Sie zunächst eine E-Mail an alle erforderlichen Stakeholder, Manager und Anwendungsinhaber, damit Sie Datenbank A offline schalten, da Sie der Meinung sind, dass dies nicht mehr verwendet wird. Stellen Sie sicher, dass Sie alle einbeziehen, und warten Sie dann einen Tag, damit die Leute zu Ihrer E-Mail zurückkehren. Wenn niemand zurückkehrt
take full backup of the database
und die Datenbank offline macht (lassen Sie sie nicht fallen). Warten Sie noch eine Woche oder einen Monat. Sie können dies tun, da Sie DB bereits offline geschaltet haben und der Server nicht belastet wird. Ja, es werden möglicherweise monatliche Jobs ausgeführt, für die diese Datenbank einmal benötigt wird. Daher habe ich hinzugefügt, um einen Monat zu warten. Selbst nach einem Monat, wenn niemand zurückkehrt, machen Sie alles, was Sie wollen.Wenn sich die Leute über etwas beschweren, von dem Sie wissen, wer es ist oder welches Team es wahrscheinlich verwendet, können Sie weiter darüber diskutieren.
Selbst nachdem Sie nach einem Monat offline geschaltet haben, kommt jemand und beschwert sich, dass ein bestimmter Job fehlgeschlagen ist, weil Sie DB offline geschaltet haben. Sie können sehr gut sagen, dass Sie dies schon früher per E-Mail gesendet haben und es keinen Sinn macht, sich jetzt zu beschweren. In allen Fällen würden Sie erfahren, wer wann auf etwas zugreift.
PS: Dies ist ein persönlich erprobter Ansatz, nachdem auf verschiedene online bereitgestellte Lösungen verwiesen wurde, und er hat bei mir wunderbar funktioniert.
quelle
Um eine Datenbank verwenden zu können, muss jede Sitzung zuerst eine Sperre erhalten, normalerweise eine gemeinsame Sperre. Suchen Sie einfach nach solchen Schlössern:
quelle
Verwenden:
auf dem SQL-Server.
Auf diese Weise erhalten Sie alle Informationen zu den Benutzern, Sitzungen und anderen Informationen, die derzeit Ihren SQL-Server verwenden. Der Status lautet "Ausführbar", "Ruhezustand" usw.
Sie können dies auch unter folgender Adresse überprüfen: https://msdn.microsoft.com/en-us/library/ms174313.aspx
ODER wenn Sie nur eine Abfrage benötigen, verwenden Sie:
Vielen Dank,
quelle
Sie suchen nach zwei Informationen:
Ich glaube, diese Abfrage gibt die Informationen zurück, die Sie benötigen, oder liefert Ihnen zumindest die Grundlage, die Ihren Anforderungen entspricht.
Ich habe diesen Code anhand von Beispielen angepasst, die ich in Books Online gefunden habe:
quelle
Überprüfen Sie unten Abfrage:
quelle
So überprüfen Sie, wie viele Verbindungen für die angegebene Datenbank geöffnet sind:
quelle
sys.dm_exec_sessions