Vous pouvez découvrir tous ces événements qui sont en cours du cycle du journal des événements à l' aide sp_readerrorlog
:
EXEC sys.sp_readerrorlog @p1 = 0, @p2 = 1, @p3 = N'OFFLINE';
Vous pouvez parcourir les valeurs de @p1
si vous ne les trouvez pas dans le journal des événements en cours. Par défaut, vous devriez pouvoir lire les 6 fichiers journaux d'erreurs actuels et antérieurs, utilisez donc 0-6 comme arguments pour remonter le plus loin possible (sur mon système, je ne pouvais pas obtenir 0
/ NULL
agréger tous les fichiers journaux; YMMV ).
Renvoie quelque chose comme ceci:
LogDate ProcessInfo Text
------------- ----------- ---------------------------------------------------------
yyyy-mm-dd... spid72 Setting database option OFFLINE to ON for database 'foo'.
Il y a une chance, bien sûr, que le journal des erreurs soit suffisamment rempli pour que le ou les événements se soient produits avant l'ensemble actuel des journaux d'erreurs. Dans ce cas, vous n'avez pas de chance. Pour conserver un historique d'exécution plus long à l'avenir, vous pouvez modifier le nombre de journaux d'erreurs conservés. Dans l'Explorateur d'objets, développez Gestion, cliquez avec le bouton droit sur Journaux SQL Server et choisissez Configurer. Vous pouvez y modifier les paramètres de recyclage des fichiers journaux d'erreurs, notamment en conservant les 99 fichiers précédents. Voir également cette réponse .
Notez que cela sp_readerrorlog
n'est pas documenté et n'est pas pris en charge, bien que de nombreuses personnes aient écrit à ce sujet . En fin de compte, les fichiers journaux d'erreurs ne sont que des fichiers texte, vous pouvez donc écrire votre propre PowerShell, CLR, etc. qui analyse simplement les fichiers et renvoie les mêmes informations. Vous pouvez déterminer où se trouvent les fichiers journaux d'erreurs pour cette instance à l'aide de:
SELECT SERVERPROPERTY('ErrorLogFileName');
Les fichiers seront nommés ERRORLOG
, ERRORLOG.1
, ERRORLOG.2
, etc. Vous pouvez aller ouvrir les fichiers dans un éditeur de texte de base pour voir la structure, bien que je serais prudent quant à l' ouverture du fichier en cours d'utilisation ( ERRORLOG
).
OFFLINE
. Leoffline
statut est-il en faitsys.databases
?Si la base de données a été mise hors ligne:
c'est à dire
Vous verriez en effet un message enregistré dans le journal des erreurs SQL Server:
ID de message de 5084 si vous surveillez les modifications des options de base de données.
la source