Récupérer des scripts de requête SQL non enregistrés

196

Comment récupérer les scripts non enregistrés si l'onglet SSMS plante / non enregistré se ferme accidentellement?

Bourdon
la source
3
Je suis d'accord avec John en principe; cependant, cela arrive de temps en temps à nous tous: "Je pensais l'avoir sauvé!" Prenez l'habitude d'économiser avant de commencer à coder. Ctrl + S est votre ami!
Graeme
4
Essayez SSMSBOOST (mode communautaire gratuit), ou Redgate (non gratuit, mais très utile)
Vasily Ivoyzha
2
Malheureusement, SSMS ne dispose pas actuellement de la fonction Annuler l'onglet fermé. J'ai créé l'élément de connexion suivant, nous espérons que Microsoft l'ajoutera dans une future version: connect.microsoft.com/SQLServer/Feedback/Details/1044403
Rob Nicholson

Réponses:

425

Publier ceci au cas où quelqu'un tomberait dans le même problème.

Googlé pour récupérer des scripts non enregistrés et trouvé une solution.

Exécutez le selectscript suivant . Il fournit une liste de scripts et son heure d'exécution au cours des dernières 24 heures. Cela sera utile pour récupérer les scripts, si nous fermons notre fenêtre de requête dans SQL Server Management Studio sans enregistrer le script. Il fonctionne pour tous les scripts exécutés non seulement pour une vue ou une procédure.

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
Bourdon
la source
27
C'est certainement une façon originale de trouver vos requêtes, mais elle ne contiendra des informations que tant que la requête restera dans le cache du plan (ou jusqu'à ce que SQL Server soit redémarré, selon la première éventualité). Vous devriez toujours prendre l'habitude de sauvegarder votre travail.
Matt
5
Il convient de noter que vous devez disposer de l'autorisation VIEW SERVER STATE pour exécuter cette requête
BornToCode
4
Si vous exécutez cette requête sur une base de données contenant de nombreuses requêtes, je recommanderais d'ajouter une condition de filtre est la clause where, comme where execsql.text comme '% Une partie de votre script à rechercher par%'
Jeff Fol
3
Merci pour la requête, cela m'a fait gagner beaucoup de temps lorsque j'ai fermé accidentellement le mauvais onglet. Puisqu'il y a beaucoup d'exécutions indésirables (c'est-à-dire des choses que vous ne voulez pas), puis-je offrir un petit ajout de filtrage des choses en excès en les déversant toutes dans une table temporaire et en les lisant, filtrées?
Sava Glodic
3
ce travail parfait pour moi, j'ai développé ce script toute la matinée puis j'ai fermé la fenêtre sans l'enregistrer et j'ai commencé à pleurer.
RobsionKarls
167

Vous pourrez peut- être les trouver dans l'un de ces emplacements (selon la version de Windows que vous utilisez).

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

OU

%USERPROFILE%\AppData\Local\Temp

Googlé à partir de cette source et de cette source.

Mat
la source
2
La version de Windows sur laquelle je travaille est Windows 7. Aucun fichier à cet emplacement. C'est vide. sous AppData \ Local \ Temp les fichiers de requête Microsoft SQL Server sont o kb.
BumbleBee
2
C'est génial - m'a sauvé quelques heures de travail après une panne du système! Trouvé les fichiers dansBackup Files\Solution1
Kevin Pope
4
Si seulement je pouvais voter pour cette réponse pendant le nombre d'heures que j'ai économisé sans avoir à réécrire une requête perdue.
ctorx
1
essayé de chercher dans le dossier temporaire .. des fichiers comme ~ vsA497.sql existent mais la taille de chacun est de 0 Ko, même après ouverture, je n'ai aucune ligne écrite dans le fichier. Dans le dossier de sauvegarde, il n'y a pas de fichier.
Mark
1
C: \ Users \ YourUserName \ AppData \ Local \ Temp a récupéré exactement ce que j'ai perdu. Le fichier a été perdu il y a 5 minutes, Windows 10, SQL Server Management Studio 17.
dmoney
52

Un peu tard pour la fête, mais aucun des emplacements mentionnés précédemment n'a fonctionné pour moi - pour une raison quelconque, les fichiers de sauvegarde / récupération automatique ont été enregistrés dans le dossier VS15 sur mon PC (c'est pour SQL Server 2016 Management Studio)

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

Vous voudrez peut-être vérifier vos paramètres Outils-Options-Environnement-Importer et exporter, l'emplacement des fichiers de paramètres pourrait vous diriger vers votre dossier de sauvegarde - je n'aurais jamais regardé sous le dossier VS15 pour cela.

DonQ
la source
7
C'est correct pour SSMS 2017, j'ai trouvé mes fichiers perdus dans ce dossier VS15 à la place
irgnosis
1
Vérifiez ce dossier; le mien se cachait ici aussi.
Radderz
1
MERCI MERCI MERCI!!!! Avait un assez gros script perdu à cause d'un crash inattendu, et c'est le dossier dans lequel il a fini par aller !!!
Unfallener
1
Merci - je n'ai trouvé mes scripts nulle part!
keithm du
2
Vous devriez obtenir un badge de héros pour celui-ci
Joe Schmucker
32

Utilisez l'emplacement suivant où vous pouvez trouver tous ~AutoRecover.~vs*.sql( fichiers de récupération automatique ):

C:\Users\<YourUserName>\Documents\SQL Server Management Studio\Backup Files\Solution1
Mandar
la source
4
"ce dossier est vide"
adolf garlic
C'est celui dont je ne me souvenais pas. Je ne l'ai pas limité au dossier publié et j'ai trouvé ce que j'avais perdu à la mort d'un SSMS.
Jeff Moden
1
Ou vous pouvez essayer: C: \ Users \ YourUserName \ My Documents \ SQL Server Management Studio \ Backup Files \ Solution1
Mandar
11

Peut-être que vous ne trouvez pas les répertoires suggérés ou que votre fichier de récupération est manquant, Dieu merci, j'ai répliqué le crash avec un script non enregistré et conduisez-moi vers ce répertoire:

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

Alors, peut-être que cela vous sauve la journée :)

frapeti
la source
9

Je sais que c'est un vieux fil de discussion, mais pour ceux qui cherchent à récupérer un script après un crash ssms, procédez comme suit

  1. Ouvrir le disque local (C):
  2. Ouvrir le dossier des utilisateurs
  3. Recherchez le dossier correspondant à votre nom d'utilisateur et ouvrez-le
  4. Cliquez sur le fichier Documents
  5. Cliquez sur le dossier Visual Studio ou cliquez sur Dossier des fichiers de sauvegarde s'il est visible
  6. Cliquez sur le dossier des fichiers de sauvegarde
  7. Ouvrir le dossier Solution1
  8. Tous les fichiers temporaires récupérés seront ici. Les fichiers se termineront par vs suivi d'un nombre tel que vs9E61
  9. Ouvrez les fichiers et vérifiez votre code perdu. J'espère que cela pourra aider. Ces étapes exactes viennent de fonctionner pour moi. im utilisant Sql server Express 2017
frustration multipliée
la source
7

J'utilise Windows 8 et j'ai trouvé les scripts manquants dans le chemin ci-dessous:

C:\Users\YourUsername\Documents\SQL Server Management Studio\Backup Files
M PRATAP
la source
7

Accédez à SSMS >> Outils >> Options >> Environnement >> Récupération automatique

Il existe deux paramètres différents:

1) Enregistrer les informations de récupération automatique toutes les minutes

Cette option enregistre le fichier de requête SQL à un certain intervalle. Réglez cette option sur la valeur minimale possible pour éviter toute perte. Si vous avez défini cette valeur sur 5, dans le pire des cas, vous pouvez perdre les 5 dernières minutes du travail.

2) Conserver les informations de récupération automatique pendant des jours

Cette option conservera les informations de récupération automatique pour les jours spécifiés. Cependant, je suggère qu'en cas d'accident, ouvrez immédiatement SQL Server Management Studio et récupérez votre fichier. Ne pas remettre à plus tard cette tâche importante pour les dates futures.

noobjet
la source
11
Une installation automatique d'entreprise a redémarré ma machine en mon absence - cela aurait forcé la fermeture de toutes les applications. Il y avait des onglets ouverts, certains non enregistrés. J'ai ces deux options sélectionnées et il n'y a pas d'options de récupération ni de documents temporaires dans d'autres endroits déclarés par d'autres intervenants
adolf garlic
J'ai les deux options mais rien n'a été récupéré après l'échec de SSMS.
Kate
6

Complément SSMSBoost (actuellement gratuit)

  • garde une trace de toutes les instructions exécutées (les enregistre sur le disque)
  • régulièrement enregistre un instantané du contenu de l'éditeur SQL. Vous conservez l'historique des modifications de votre script. Parfois, "la meilleure" version n'est pas la dernière et vous souhaitez restaurer l'état intermédiaire.
  • garde une trace des onglets ouverts et permet de les restaurer après redémarrage. Les onglets non enregistrés sont également restaurés.

+ des tonnes d'autres fonctionnalités. (Je suis le développeur du complément)

Andrei Rantsevich
la source
1
C'est un merveilleux complément, soit dit en passant. Cela m'a sauvé deux heures de travail que je pensais avoir sauvées, mais pas. (Je n'ai aucune affiliation avec Andrei)
Jonathan
J'aimerais pouvoir voter plus. SSMSBoost a "sauvé mon bacon" plus d'une fois.
Andrew Steitz
4

Vous pouvez trouver des fichiers ici, lorsque vous avez fermé la fenêtre SSMS accidentellement

C:\Windows\System32\SQL Server Management Studio\Backup Files\Solution1
Naveen
la source
OS Windows 8.1?
Kiquenet
4

J'ai pu récupérer mes fichiers à partir de l'emplacement suivant:

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

Il devrait y avoir différents fichiers de récupération par onglet. Je dirais que recherchez les fichiers pour la date à laquelle vous les avez perdus.

Non-programmeur
la source