Stellen Sie nicht gespeicherte SQL-Abfrageskripte wieder her


196

Wie kann ich die nicht gespeicherten Skripte wiederherstellen, wenn das SSMS abstürzt / die nicht gespeicherte Registerkarte versehentlich geschlossen wird?


3
Ich stimme John im Prinzip zu; Dies passiert jedoch von Zeit zu Zeit für uns alle: "Ich dachte, ich hätte das gerettet!" Machen Sie es sich zur Gewohnheit, ZUERST ZU SPEICHERN, bevor Sie mit dem Codieren beginnen. Strg + S ist dein Freund!
Graeme

4
Versuchen Sie SSMSBOOST (kostenloser Community-Modus) oder Redgate (nicht kostenlos, aber sehr nützlich)
Vasily Ivoyzha

2
Leider verfügt SSMS derzeit nicht über die Funktion "Geschlossene Registerkarte rückgängig machen". Ich habe das folgende Connect-Element erstellt, damit Microsoft es hoffentlich in einer zukünftigen Version hinzufügen kann: connect.microsoft.com/SQLServer/Feedback/Details/1044403
Rob Nicholson

Antworten:


423

Posten Sie dies für den Fall, dass jemand auf dasselbe Problem stößt.

Gegoogelt, um nicht gespeicherte Skripte abzurufen und fand eine Lösung.

Führen Sie das folgende selectSkript aus. Es enthält eine Liste der Skripte und deren Ausführungszeit in den letzten 24 Stunden. Dies ist hilfreich, um die Skripte abzurufen, wenn wir unser Abfragefenster in SQL Server Management Studio schließen, ohne das Skript zu speichern. Es funktioniert für alle ausgeführten Skripte, nicht nur für eine Ansicht oder Prozedur.

Use <database>
SELECT execquery.last_execution_time AS [Date Time], execsql.text AS [Script] FROM sys.dm_exec_query_stats AS execquery
CROSS APPLY sys.dm_exec_sql_text(execquery.sql_handle) AS execsql
ORDER BY execquery.last_execution_time DESC

27
Dies ist definitiv eine Standardmethode zum Auffinden Ihrer Abfragen, die jedoch nur Informationen enthält, solange die Abfrage im Plan-Cache verbleibt (oder bis SQL Server neu gestartet wird, je nachdem, was zuerst eintritt). Sie sollten sich trotzdem angewöhnen, Ihre Arbeit zu retten.
Matt

5
Es kann erwähnenswert sein, dass Sie die Berechtigung VIEW SERVER STATE haben müssen, um diese Abfrage
auszuführen

4
Wenn Sie diese Abfrage in einer Datenbank ausführen, für die viele Abfragen ausgeführt werden, würde ich empfehlen, eine Filterbedingung hinzuzufügen, die die where-Klausel ist, z. B. where execsql.text wie '% Ein Teil Ihres Skripts, nach dem% gesucht werden soll'
Jeff Fol

3
Vielen Dank für die Abfrage, dies hat mir viel Zeit gespart, als ich versehentlich den falschen Tab geschlossen habe. Da es viele Junk-Ausführungen gibt (auch bekannt als Dinge, die Sie nicht wollen), kann ich eine kleine Ergänzung zum Herausfiltern überschüssiger Dinge anbieten, indem ich alles in eine temporäre Tabelle lege und diese dann gefiltert lese?
Sava Glodic

3
Diese Arbeit ist perfekt für mich. Ich habe das Skript den ganzen Morgen entwickelt, dann habe ich das Fenster geschlossen, ohne es zu speichern, und angefangen zu weinen.
RobsionKarls

167

Sie können der Lage sein , sie in einem dieser Orte zu finden (abhängig von der Version von Windows Sie verwenden).

Windows XP

C:\Documents and Settings\YourUsername\My Documents\SQL Server Management Studio\Backup Files\

Windows Vista / 7/10

%USERPROFILE%\Documents\SQL Server Management Studio\Backup Files

ODER

%USERPROFILE%\AppData\Local\Temp

Von dieser Quelle und dieser Quelle gegoogelt .


2
Die Windows-Version, an der ich arbeite, ist Windows 7. Keine Dateien an diesem Speicherort. Es ist leer. Unter AppData \ Local \ Temp sind die Microsoft SQL Server-Abfragedateien o kb.
BumbleBee

2
Das ist großartig - hat mir nach einem Systemabsturz ein paar Stunden Arbeit erspart! Gefunden die Dateien inBackup Files\Solution1
Kevin Pope

4
Wenn ich diese Antwort nur für die Anzahl der Stunden abstimmen könnte, die ich gespart habe, ohne eine verlorene Abfrage neu schreiben zu müssen.
Ctorx

1
habe versucht, im temporären Ordner zu suchen .. Dateien wie ~ vsA497.sql existieren, aber die Größe von jedem ist 0kb, auch nach dem Öffnen bekomme ich keine Zeile in die Datei geschrieben. Im Sicherungsordner befindet sich keine Datei.
Mark

1
C: \ Users \ YourUserName \ AppData \ Local \ Temp hat genau das wiederhergestellt, was ich verloren habe. Datei ging vor 5 Minuten verloren, Windows 10, SQL Server Management Studio 17.
dmoney

52

Ein bisschen spät zur Party, aber keiner der zuvor genannten Speicherorte hat für mich funktioniert - aus irgendeinem Grund wurden die Sicherungs- / Autorecovery-Dateien im Ordner VS15 auf meinem PC gespeichert (dies ist für SQL Server 2016 Management Studio).

C: \ Benutzer \ IHR BENUTZERNAME \ Dokumente \ Visual Studio 2015 \ Sicherungsdateien \ Lösung1

Vielleicht möchten Sie Ihre Tools-Optionen-Umgebung-Import- und Exporteinstellungen überprüfen. Der Speicherort der Einstellungsdateien könnte Sie auf Ihren Sicherungsordner verweisen. Ich hätte nie unter dem VS15-Ordner danach gesucht.


7
Dies ist korrekt für SSMS 2017, ich habe meine verlorenen Dateien stattdessen in diesem VS15-Ordner gefunden
irgnosis

1
Überprüfen Sie diesen Ordner; meins versteckte sich auch hier.
Radderz

1
DANKE DANKE DANKE!!!! Hatte ein ziemlich großes Skript durch einen unerwarteten Absturz verloren, und dies ist der Ordner, in den es letztendlich ging !!!
Unfallener

1
Vielen Dank - ich konnte meine Skripte nirgendwo finden!
Keithm

2
Sie sollten ein Heldenabzeichen für dieses bekommen
Joe Schmucker

32

Verwenden Sie den folgenden Speicherort, an dem Sie alle finden können ~AutoRecover.~vs*.sql( Autorecovery-Dateien ):

C:\Users\<YourUserName>\Documents\SQL Server Management Studio\Backup Files\Solution1

4
"Dieser Ordner ist leer"
Adolf Knoblauch

Dies ist der, an den ich mich nicht erinnern konnte. Ich habe es nicht auf den veröffentlichten Ordner beschränkt und festgestellt, was ich durch einen SSMS-Tod verloren habe.
Jeff Moden

1
Oder Sie können versuchen: C: \ Benutzer \ Ihr Benutzername \ Eigene Dateien \ SQL Server Management Studio \ Sicherungsdateien \ Solution1
Mandar

11

Vielleicht finden Sie die vorgeschlagenen Verzeichnisse nicht oder Ihre Wiederherstellungsdatei fehlt. Gott sei Dank habe ich den Absturz mit einem nicht gespeicherten Skript repliziert und mich in dieses Verzeichnis geführt:

C: \ Benutzer \ Benutzer \ OneDrive \ Dokumente \ Visual Studio 2015 \ Sicherungsdateien \ Lösung1

Also, vielleicht rettet das deinen Tag :)


9

Ich weiß, dass dies ein alter Thread ist, aber für alle, die nach einem Absturz von ssms ein Skript abrufen möchten, gehen Sie wie folgt vor

  1. Öffnen Sie die lokale Festplatte (C):
  2. Öffnen Sie den Benutzerordner
  3. Suchen Sie den für Ihren Benutzernamen relevanten Ordner und öffnen Sie ihn
  4. Klicken Sie auf die Datei Dokumente
  5. Klicken Sie auf den Visual Studio-Ordner oder klicken Sie auf Ordner "Sicherungsdateien", falls sichtbar
  6. Klicken Sie auf den Ordner Sicherungsdateien
  7. Öffnen Sie den Ordner Solution1
  8. Alle wiederhergestellten temporären Dateien werden hier angezeigt. Die Dateien enden mit vs, gefolgt von einer Zahl wie vs9E61
  9. Öffnen Sie die Dateien und suchen Sie nach Ihrem verlorenen Code. Hoffentlich hilft das. Diese genauen Schritte haben gerade für mich funktioniert. Ich benutze SQL Server Express 2017

7

Ich verwende Windows 8 und habe die fehlenden Skripte im folgenden Pfad gefunden:

C:\Users\YourUsername\Documents\SQL Server Management Studio\Backup Files

7

Gehen Sie zu SSMS >> Extras >> Optionen >> Umgebung >> AutoWiederherstellen

Es gibt zwei verschiedene Einstellungen:

1) Speichern Sie die AutoRecover-Informationen alle Minuten

Diese Option speichert die SQL-Abfragedatei in einem bestimmten Intervall. Stellen Sie diese Option auf den minimal möglichen Wert ein, um Verluste zu vermeiden. Wenn Sie diesen Wert auf 5 gesetzt haben, können Sie im schlimmsten Fall die letzten 5 Minuten der Arbeit verlieren.

2) Bewahren Sie die AutoRecover-Informationen tagelang auf

Diese Option speichert die AutoRecovery-Informationen für bestimmte Tage. Ich empfehle jedoch, im Falle eines Unfalls SQL Server Management Studio sofort zu öffnen und Ihre Datei wiederherzustellen. Zögern Sie diese wichtige Aufgabe nicht für zukünftige Termine.


11
Eine automatische Unternehmensinstallation hat meinen Computer in meiner Abwesenheit neu gestartet - dies hätte das Schließen aller Apps erzwungen. Es waren Tabs geöffnet, einige gespeichert, andere nicht. Ich habe beide Optionen ausgewählt und es gibt keine Wiederherstellungsoptionen oder temporären Dokumente an anderen Orten, die von anderen Antwortenden angegeben wurden
Adolf Knoblauch

Ich habe beide Optionen, aber nach dem Ausfall von SSMS wurde nichts wiederhergestellt.
Kate

6

SSMSBoost-Add-In (derzeit kostenlos)

  • Verfolgt alle ausgeführten Anweisungen (speichert sie auf der Festplatte)
  • Regular speichert eine Momentaufnahme des Inhalts des SQL-Editors. Sie behalten den Verlauf der Änderungen Ihres Skripts. Manchmal ist "die beste" Version nicht die letzte und Sie möchten den Zwischenzustand wiederherstellen.
  • Verfolgt geöffnete Registerkarten und ermöglicht deren Wiederherstellung nach dem Neustart. Nicht gespeicherte Registerkarten werden ebenfalls wiederhergestellt.

+ Tonnen von anderen Funktionen. (Ich bin der Entwickler des Add-Ins)


1
Dies ist übrigens ein wunderbares Add-In. Es hat mir gerade zwei Stunden Arbeit erspart, die ich für gespart gehalten hatte, aber nicht. (Ich habe keine Zugehörigkeit zu Andrei)
Jonathan

Ich wünschte, ich könnte mehr abstimmen. SSMSBoost hat mehr als einmal "meinen Speck gerettet".
Andrew Steitz

4

Sie finden Dateien hier, wenn Sie das SSMS-Fenster versehentlich geschlossen haben

C:\Windows\System32\SQL Server Management Studio\Backup Files\Solution1

Betriebssystem Windows 8.1?
Kiquenet

4

Ich konnte meine Dateien von folgendem Speicherort wiederherstellen:

C:\Users\<yourusername>\Documents\SQL Server Management Studio\Backup Files\Solution1

Pro Registerkarte sollten unterschiedliche Wiederherstellungsdateien vorhanden sein. Ich würde sagen, suchen Sie nach den Dateien für das Datum, an dem Sie sie verloren haben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.