Utilisation de SQL Server 2012.détecter si errorlog serveur SQL a été recyclé
Je veux détecter les fichiers journaux d'erreurs de SQL Server ont été recyclés (soit par sp_cycle_errorlog ayant été appelé, ou le serveur SQL ayant été redémarrés).
par exemple. Je veux détecter si le contenu de:
C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log\ERRORLOG
ont été déplacés vers Errorlog.1 depuis la dernière fois un contrôle similaire a été faite. Ceci est à des fins d'audit.
Jusqu'à présent, mon approche est la suivante:
1) appeler SELECT SERVERPROPERTY('ErrorLogFileName')
pour obtenir chemin du fichier journal.
2) obtenir la dernière date de modification du fichier ERRORLOG.1 (à partir du code .net). Si le fichier a été trouvé et que l'horodatage est postérieur à la dernière fois qu'il a été vérifié, alors ERRORLOG a été cyclé.
Des défauts avec cette approche? D'autres approches auxquelles vous pouvez penser?
EDIT 1: la vérification sera effectuée à partir d'un service Windows.
EDIT 2: une autre approche pourrait consister à courir: Xp_readerrorlog, à la recherche de texte: « SQL Server commence » et « Le journal des erreurs a été réinitialisée ». par exemple:
exec xp_readerrorlog 0, 1, N'SQL Server is starting', null, null, null, null
exec xp_readerrorlog 0, 1, N'The error log has been reinitialized', null, null, null, null
Cela fonctionnerait, mais semble un peu lent. (On peut supposer que le serveur sql doit lire tout le journal des erreurs?).
c'est exactement ce que je avais besoin. Merci beaucoup. –