Les requêtes de cette page lisent des informations de l'instance sans modifier vos données. Les commandes qui modifient quelque chose sont signalées dans le texte. Testez toujours sur un environnement non critique avant la production, et relisez chaque requête avant de l'exécuter.
Le script
Il s'appuie sur la procédure xp_readerrorlog, non documentée par Microsoft mais très utilisée. Les deux chaînes de recherche sont combinées par un ET : une ligne doit contenir les deux. Laissez-en une vide si une seule suffit.
-- Recherche d'un événement dans tous les fichiers du journal d'erreurs SQL Server
-- Droit requis : sysadmin (ou droits sur xp_readerrorlog).
SET NOCOUNT ON;
DECLARE @Recherche1 nvarchar(256) = N'Error: 823'; -- texte à trouver (NULL = tout)
DECLARE @Recherche2 nvarchar(256) = NULL; -- second texte, combiné par ET
DECLARE @Debut datetime = NULL; -- ex. '2026-11-01 00:00'
DECLARE @Fin datetime = NULL; -- ex. '2026-11-05 23:59'
DECLARE @TypeLog int = 1; -- 1 = journal SQL Server, 2 = journal de l'Agent
CREATE TABLE #fichiers (archive int, date_fichier datetime, taille_octets bigint);
CREATE TABLE #log (
archive int NULL,
date_log datetime,
process_info nvarchar(64),
texte nvarchar(max)
);
INSERT INTO #fichiers (archive, date_fichier, taille_octets)
EXEC master.dbo.sp_enumerrorlogs @TypeLog;
DECLARE @n int = 0, @max int = (SELECT MAX(archive) FROM #fichiers);
WHILE @n <= @max
BEGIN
BEGIN TRY
INSERT INTO #log (date_log, process_info, texte)
EXEC master.dbo.xp_readerrorlog @n, @TypeLog, @Recherche1, @Recherche2, @Debut, @Fin, N'asc';
UPDATE #log SET archive = @n WHERE archive IS NULL;
END TRY
BEGIN CATCH
PRINT CONCAT('Fichier ', @n, ' illisible : ', ERROR_MESSAGE());
END CATCH;
SET @n += 1;
END;
SELECT archive AS fichier, date_log, process_info, texte
FROM #log
ORDER BY date_log, archive;
-- Nombre de fichiers disponibles et période couverte
SELECT COUNT(*) AS nb_fichiers, MIN(date_fichier) AS plus_ancien, MAX(date_fichier) AS plus_recent
FROM #fichiers;
DROP TABLE #log;
DROP TABLE #fichiers;Recherches utiles
N'Error: 823',N'Error: 824',N'Error: 825': erreurs d'entrées-sorties, signes de corruption ou de panne de stockage.N'Login failed': échecs de connexion. Avec une seconde chaîne, un nom de login ou une adresse IP.N'I/O requests taking longer than 15 seconds': lenteur du stockage.N'deadlock': interblocages enregistrés par un indicateur de trace.N'Recovery of database'ouN'Starting up database': redémarrages et récupérations.N'BACKUP'avecN'failed': échecs de sauvegarde.
Conseils
- Par défaut, SQL Server garde 6 archives en plus du fichier courant. Pour garder plus d'historique, augmentez ce nombre (jusqu'à 99 dans SSMS, clic droit sur Gestion, Journaux SQL Server, Configurer).
- Un redémarrage du service ou la procédure
sp_cycle_errorlogouvre un nouveau fichier. Planifier un cycle hebdomadaire évite des fichiers énormes, ce qui rend la lecture lente. - Le journal de l'Agent SQL Server se lit avec le même script en passant
@TypeLog = 2. - Les erreurs graves figurent aussi dans le journal d'événements Windows, et dans la session d'événements étendus
system_health.