Odzyskaj niezapisane skrypty zapytań SQL

197

Jak odzyskać niezapisane skrypty, jeśli SSMS ulegnie awarii / niezapisana karta zostanie przypadkowo zamknięta?

Trzmiel
źródło
3
Zasadniczo zgadzam się z Janem; zdarza się to jednak każdemu z nas: „Myślałem, że to uratowałem!” Nałóż SAVE FIRST przed rozpoczęciem kodowania. Ctrl + S jest twoim przyjacielem!
Graeme,
4
Wypróbuj SSMSBOOST (darmowy tryb społeczności) lub Redgate (nie darmowy, ale bardzo przydatny)
Vasily Ivoyzha
2
Niestety SSMS obecnie nie ma funkcji Cofnij zamkniętą kartę. Utworzyłem następujący element Connect, aby firma Microsoft dodała go w przyszłej wersji: connect.microsoft.com/SQLServer/Feedback/Details/1044403
Rob Nicholson

Odpowiedzi:

425

Publikowanie tego na wypadek, gdyby ktoś napotkał ten sam problem.

Googled na Pobierz niezapisane skrypty i znalazł rozwiązanie.

Uruchom następujący selectskrypt. Zawiera listę skryptów i czas ich wykonania w ciągu ostatnich 24 godzin. Pomoże to w odzyskaniu skryptów, jeśli zamkniemy okno zapytania w studiu zarządzania SQL Server bez zapisywania skryptu. Działa dla wszystkich wykonanych skryptów nie tylko widoku lub procedury.

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
Trzmiel
źródło
27
Jest to zdecydowanie nieszablonowy sposób znajdowania zapytań, ale przechowuje informacje tylko tak długo, jak długo zapytanie pozostaje w pamięci podręcznej planu (lub do momentu ponownego uruchomienia programu SQL Server, w zależności od tego, co nastąpi wcześniej). Nadal powinieneś przyzwyczajać się do oszczędzania swojej pracy.
Matt
5
Warto zauważyć, że aby uruchomić to zapytanie, musisz mieć uprawnienie VIEW SERVER STATE
BornToCode,
4
Jeśli uruchamiasz to zapytanie w bazie danych, która ma wiele zapytań, polecam dodanie warunku filtru to klauzula where, na przykład gdzie execsql.text, np. „% Część skryptu do przeszukiwania według%”
Jeff Fol
3
Dzięki za zapytanie, dzięki temu zaoszczędziłem sporo czasu, gdy przypadkowo zamknąłem niewłaściwą kartę. Ponieważ istnieje wiele śmieciowych wykonań (inaczej rzeczy, których nie chcesz), czy mogę zaoferować niewielki dodatek polegający na odfiltrowaniu nadmiaru rzeczy poprzez zrzucenie go do tabeli tymczasowej, a następnie przeczytanie go, odfiltrowanie?
Sava Glodic
3
ta praca jest idealna dla mnie, cały ranek pracuję nad tym skryptem, potem zamknąłem okno bez zapisywania i zacząłem płakać.
RobsionKarls
167

Państwo może być w stanie je znaleźć w jednym z tych miejsc (w zależności od wersji systemu Windows, której używasz).

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

LUB

%USERPROFILE%\AppData\Local\Temp

Googled z tego źródła i tego źródła.

Matt
źródło
2
Wersja systemu Windows, nad którą pracuję, to Windows 7. Brak plików w tej lokalizacji. To jest puste. w obszarze AppData \ Local \ Temp pliki zapytań Microsoft SQL Server są o kb.
BumbleBee
2
To świetnie - zaoszczędziłem kilka godzin pracy po awarii systemu! Znaleziono pliki wBackup Files\Solution1
Kevin Pope
4
Gdybym tylko mógł głosować za tą odpowiedzią za liczbę zaoszczędzonych godzin, bez konieczności przepisywania utraconego zapytania.
ctorx
1
próbowałem szukać w folderze temp .. istnieją pliki takie jak ~ vsA497.sql, ale rozmiar każdego z nich to 0kb, nawet po otwarciu nie otrzymałem żadnej linii zapisanej w pliku. W folderze kopii zapasowej nie ma pliku.
Mark
1
C: \ Users \ YourUserName \ AppData \ Local \ Temp odzyskał dokładnie to, co straciłem. Plik został utracony 5 minut temu, Windows 10, SQL Server Management Studio 17.
dmoney
52

Trochę za późno na imprezę, ale żadna z wcześniej wymienionych lokalizacji nie działała dla mnie - z jakiegoś powodu pliki kopii zapasowej / autorecovery zostały zapisane w folderze VS15 na moim komputerze (dotyczy SQL Server 2016 Management Studio)

C: \ Users \ YOURUSERNAME \ Documents \ Visual Studio 2015 \ Backup Files \ Solution1

Możesz sprawdzić Narzędzia-Opcje-Środowisko-Ustawienia importu i eksportu, lokalizacja plików ustawień może wskazywać na folder kopii zapasowej - nigdy nie szukałem tego w folderze VS15.

DonQ
źródło
7
To jest poprawne dla SSMS 2017, zamiast tego znalazłem swoje utracone pliki w tym folderze
VS15
1
Sprawdź ten folder; moja też się tu ukrywała.
Radderz
1
DZIEKUJĘ DZIEKUJĘ DZIĘKUJĘ!!!! Miałem całkiem duży skrypt, który zginął w wyniku nieoczekiwanej awarii, i to jest folder, w którym się znalazł !!!
Unfallener
1
Dziękuję - nigdzie nie mogłem znaleźć moich skryptów!
keithm
2
Powinieneś zdobyć odznakę bohatera
Joe Schmucker
32

Skorzystaj z następującej lokalizacji, w której możesz znaleźć wszystkie ~AutoRecover.~vs*.sql( pliki autoodzyskiwania ):

C:\Users\<YourUserName>\Documents\SQL Server Management Studio\Backup Files\Solution1
Mandar
źródło
4
„ten folder jest pusty”
czosnek Adolf
Tego nie pamiętam. Nie ograniczyłem go do opublikowanego folderu i znalazłem to, co straciłem w wyniku śmierci SSMS.
Jeff Moden
1
Lub możesz spróbować: C: \ Users \ YourUserName \ My Documents \ SQL Server Management Studio \ Backup Files \ Solution1
Mandar
11

Może nie znalazłeś sugerowanych katalogów lub brakuje pliku odzyskiwania, dzięki Bogu zreplikowałem awarię niezapisanym skryptem i poprowadziłem do tego katalogu:

C: \ Users \ user \ OneDrive \ Documents \ Visual Studio 2015 \ Backup Files \ Solution1

Może to oszczędza Twój dzień :)

frapeti
źródło
9

Wiem, że to stary wątek, ale dla każdego, kto chce odzyskać skrypt po awarii ssms, wykonaj następujące czynności

  1. Otwórz dysk lokalny (C):
  2. Otwórz folder użytkowników
  3. Znajdź folder odpowiedni dla swojej nazwy użytkownika i otwórz go
  4. Kliknij plik Dokumenty
  5. Kliknij folder Visual Studio lub kliknij Folder plików kopii zapasowej, jeśli jest widoczny
  6. Kliknij folder plików kopii zapasowych
  7. Otwórz folder Solution1
  8. Odzyskane pliki tymczasowe będą tutaj. Pliki zakończą się znakiem vs, a po nim liczbą, taką jak vs9E61
  9. Otwórz pliki i sprawdź zgubiony kod. Mam nadzieję, że to pomaga. Właśnie te kroki właśnie dla mnie zadziałały. używam Sql server Express 2017
frustracja zwielokrotniona
źródło
7

Korzystam z systemu Windows 8 i znalazłem brakujące skrypty w ścieżce poniżej:

C:\Users\YourUsername\Documents\SQL Server Management Studio\Backup Files
M PRATAP
źródło
7

Przejdź do SSMS >> Narzędzia >> Opcje >> Środowisko >> AutoRecover

Istnieją dwa różne ustawienia:

1) Zapisz informacje Autoodzyskiwania co minutę

Ta opcja zapisuje plik zapytania SQL w określonych odstępach czasu. Ustaw tę opcję na minimalną możliwą wartość, aby uniknąć utraty. Jeśli ustawisz tę wartość na 5, w najgorszym możliwym przypadku możesz stracić ostatnie 5 minut pracy.

2) Zachowaj informacje Autoodzyskiwania przez kilka dni

Ta opcja zachowa informacje AutoRecovery przez określone dni. Chociaż proponuję w razie wypadku otworzyć SQL Server Management Studio od razu i odzyskać plik. Nie odkładaj tego ważnego zadania na przyszłe daty.

noobjet
źródło
11
Automatyczna instalacja korporacyjna ponownie uruchomiła mój komputer pod moją nieobecność - wymusiłoby to zamknięcie wszystkich aplikacji. Były otwarte zakładki, niektóre nie. Mam obie te opcje wybrane i nie ma opcji odzyskiwania ani dokumentów „tymczasowych” w innych lokalizacjach podanych przez innych respondentów
czosnek Adolf
Mam obie opcje, ale nic nie zostało odzyskane po awarii SSMS.
Kate
6

Dodatek SSMSBoost (obecnie bezpłatny)

  • śledzi wszystkie wykonane instrukcje (zapisuje je na dysku)
  • normalnie zapisuje migawkę zawartości edytora SQL. Przechowujesz historię modyfikacji swojego skryptu. Czasami „najlepsza” wersja nie jest ostatnią i chcesz przywrócić stan pośredni.
  • śledzi otwarte zakładki i pozwala je przywrócić po ponownym uruchomieniu. Przywracane są również niezapisane karty.

+ mnóstwo innych funkcji. (Jestem programistą dodatku)

Andrei Rantsevich
źródło
1
Nawiasem mówiąc, jest to wspaniały dodatek. Właśnie zaoszczędziłem mi dwie godziny pracy, o której myślałem, że zaoszczędziłem, ale nie zrobiłem tego. (Nie mam powiązań z Andrei)
Jonathan
Chciałbym móc więcej głosować. SSMSBoost „uratował mi boczek” więcej niż jeden raz.
Andrew Steitz,
4

Pliki można znaleźć tutaj, gdy przypadkowo zamknąłeś okno SSMS

C:\Windows\System32\SQL Server Management Studio\Backup Files\Solution1
Naveen
źródło
System operacyjny Windows 8.1?
Kiquenet,
4

Mogłem odzyskać moje pliki z następującej lokalizacji:

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

Na karcie powinny znajdować się różne pliki odzyskiwania. Powiedziałbym, że poszukaj plików według daty ich utraty.

NonProgrammer
źródło