Un script SQL pour nettoyer le répertoire Log de SQL Server

Un script SQL pour nettoyer le répertoire Log de SQL ServerDans le répertoire Log de SQL Server, s’entassent, pêle-mêle, des tas de fichiers aux extensions trc, xel, txt, mdmp, audit, etc. En production, j’ai déjà vu ce répertoire cumuler plusieurs centaines de Mo, voire quelques Go. Il n’y a pas lieu de conserver ces fichiers au delà d’une durée de 3-4 semaines, à des fins d’analyse post-mortem.

Certains de ces fichiers étant verrouillés par le processus sqlservr.exe, il n’y a aucun risque particulier à nettoyer le contenu de ce répertoire. C’est à l’aide de la commande windows forfiles que vous pouvez nettoyer le contenu de ce répertoire. En donnant la possibilité très temporaire d’exécuter des commandes système à partir de SQL Server, vous pouvez utiliser le script suivant écrit en Transact-SQL, dans lequel les fichiers d’activités sont stockés dans le dossier C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Log :

EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'xp_cmdshell', 1;
GO
RECONFIGURE;
GO
xp_cmdshell 'forfiles /p "C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Log" /s /m *.* /D -21 /C "cmd /c del /Q @path"'
GO
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'xp_cmdshell', 0;
GO
RECONFIGURE;
GO
 

Base de données / , , , , ,