Jemand hat eine Abfrage in unserer SQL Server-Datenbank remote ausgeführt, und das System ist abgestürzt.
Sie haben keine Sicherung dieser Abfrage und möchten sehen, was auf dem Server ausgeführt wurde.
Ist es möglich, diese Abfrage in einem Protokoll oder in einem Verlauf zu finden?
sql-server
logs
user87094
quelle
quelle
Antworten:
Ähnlich hatte Grant Fritchey das Problem, bei dem er SSMS geschlossen und die Abfrage verloren hatte, an der er gearbeitet hatte ... bloggte hier: Oh **********!
BEARBEITEN
Um eine Antwort ein wenig detaillierter zu gestalten, enthält der oben verlinkte Link Grant eine Abfrage, mit der Sie einfach in den Cache der Instanz wechseln können, um die gerade ausgeführte Abfrage abzurufen (oder zumindest zu versuchen):
Einige weitere Optionen, die in den Kommentaren von Grants Blog erwähnt wurden:
quelle
2005+, Standardablaufverfolgung zur Rettung.
Die Standardablaufverfolgung wird bei 20 MB übertragen, SQL behält jedoch den Verlauf von 5 Ablaufverfolgungen bei. Mit Zugriff auf den Server können Sie die * .trc-Dateien aus dem Verzeichnis MSSQL \ Log abrufen. Wenn Sie nicht auf den Server zugreifen können, erhalten Sie im Folgenden den Namen der aktuellen Standard-Trace-Datei:
Wenn die aktuelle Datei beispielsweise E: \ MSSQL.1 \ MSSQL \ LOG \ log_200.trc ist, sollten die vorherigen Dateien log_199.trc, log_198.trc usw. sein. Den Inhalt der Ablaufverfolgung erhalten Sie mit:
quelle
Sie könnten der Lage sein , Informationen von zwischengespeicherten Abfragepläne abzurufen, überprüfen BOL für Informationen über sys.dm_exec_query_stats, oder diese auf die gleiche Datenbank verbunden von Management Studio:
Filtern Sie die Ausgabe mit
die Ergebnisse einschränken.
quelle
Wenn sich die Datenbank im vollständigen Wiederherstellungsmodus befindet, besteht möglicherweise die Möglichkeit, einige Daten wiederherzustellen und Einblicke in die durch das Lesen des Transaktionsprotokolls ausgeführten Vorgänge zu erhalten.
Leider wird dies nicht standardmäßig unterstützt, aber es gibt Möglichkeiten, dies zu tun.
Sie können versuchen, Tools von Drittanbietern wie ApexSQL Log oder SQL Log Rescue (kostenlos, jedoch nur SQL 2000) zu verwenden.
Eine andere Möglichkeit besteht darin, undokumentierte Funktionen wie DBCC LOG oder fn_dblog zu verwenden. Dies ist komplexer, aber kostenlos.
quelle
Wenn Ihre Datenbank auf das vollständige Wiederherstellungsmodell eingestellt ist, können Sie Ihre Transaktionsprotokollsicherungen untersuchen. Siehe
fn_dump_dblog
für weitere Informationen.quelle
ApexSQL verfügt über eine Funktion zum Ausführen von Abfragen, mit der Sie nach Datum suchen und filtern können.
Ich bin nicht sicher, ob der Verlauf aus dem SSMS-Cache abgerufen wird oder ob er tatsächlich von alleine verfolgt wird. Sie könnten versuchen, es zu installieren und auf das Beste hoffen.
quelle