Quelqu'un exécutait une requête sur notre base de données SQL Server à distance et leur système était en panne.
Ils n'ont aucune sauvegarde de cette requête et veulent voir ce qui a été exécuté sur le serveur.
Est-il possible de trouver cette requête dans un journal ou dans un historique quelque part?
sql-server
logs
utilisateur87094
la source
la source
Réponses:
Un problème similaire, Grant Fritchey, avait le même problème: il avait fermé SSMS et perdu la requête sur laquelle il travaillait ... blogué à propos de ici: Oh **********!
MODIFIER
Pour rendre cela un peu plus détaillé dans une réponse, le lien référencé ci-dessus, Grant, fournit une requête pour accéder simplement au cache de l'instance afin d'extraire la requête que vous venez d'exécuter (ou au moins d'essayer de):
Quelques autres options mentionnées dans les commentaires du blog de Grant:
la source
2005+, trace par défaut à la rescousse.
La trace par défaut est reportée à 20 Mo. SQL conserve l'historique de 5 traces. Avec un accès au serveur, vous pouvez récupérer les fichiers * .trc à partir du répertoire MSSQL \ Log. Si vous ne pouvez pas accéder au serveur, voici ce qui vous donnera le nom du fichier de trace par défaut actuel:
Si le fichier actuel est par exemple E: \ MSSQL.1 \ MSSQL \ LOG \ log_200.trc, les fichiers précédents doivent être log_199.trc, log_198.trc, etc. Obtenez le contenu de la trace avec:
la source
Vous pourrez peut- être récupérer des informations à partir de plans de requête en cache, rechercher des informations dans BOL sur sys.dm_exec_query_stats ou les exécuter à partir du studio de gestion connecté à la même base de données:
Filtrer la sortie avec
pour affiner les résultats.
la source
Si la base de données était en mode de récupération complète, il serait peut-être possible de récupérer des données et de mieux comprendre ce qui a été fait en lisant le journal des transactions.
Malheureusement, ceci n'est pas supporté par défaut, mais il existe des moyens de le faire.
Vous pouvez essayer d'utiliser des outils tiers tels que ApexSQL Log ou SQL Log Rescue (gratuit, mais SQL 2000 uniquement).
Une autre option consiste à utiliser des fonctions non documentées DBCC LOG ou fn_dblog. C'est plus complexe mais c'est gratuit.
la source
Si votre base de données est définie sur le modèle de récupération complète, vous pouvez examiner vos sauvegardes du journal des transactions. Voir
fn_dump_dblog
pour plus d'informations.la source
ApexSQL possède une fonctionnalité de "requêtes exécutées" qui vous permet de rechercher et de filtrer par date.
Je ne sais pas s'il extrait l'historique du cache SSMS ou s'il en assure le suivi seul. Vous pouvez essayer de l'installer et espérer le meilleur.
la source