décembre
2010
Que ce soit en phase de développement ou de production, le DBA (DataBase Administrator) ou le DBD (DataBase Developer) est souvent amené à consulté les fichiers de traces pour identifier et corriger des anomalies. Ces anomalies peuvent être du côté Windows ou du côté SGBD. Les outils que j’utilise pour consulter les traces sont :
–> Event Viewer Windows (Observateur d’événements)
–> et le Log File Viewer (Visionneuse du fichier journal) intégré dans SQL Server Management Studio (SSMS)
Néanmoins, je vous propose ici de réinventer la roue, juste pour le plaisir. Le plaisir qu’on éprouve en cherchant une aiguille dans une botte de foin
— Pré-requis
============================================================
–> Installer LogParser sur la machine qui doit exécuter les commandes ci-dessous. Télécharger
–> Mettre dans le Path le répertoire d’installation de LogParser (pour moi c’est C:\Program Files\Log Parser 2.2)
/*============================================================
–########## Event Viewer LOG ############################
============================================================*/
SET NOCOUNT ON
USE msdb
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[T_EVTLOG]') AND type in (N'U'))
DROP TABLE [dbo].[T_EVTLOG]
GO
BEGIN
– Variables
DECLARE @REQUETELOGPARSER nvarchar(max) – Requte logparser
, @CMD varchar(4000) – Commande shell excuter
, @ServeurSOURCE varchar(4000) – Serveur qui hberge les logs qu'on veut analyser
, @SOURCELOG varchar(1000) – Source du log : Application, System, Security
, @cnxDESTINATION varchar(4000) – Connexion au serveur destination des logs
, @BaseDESTINATION varchar (50) – Base destination des logs
, @TableDESTINATION varchar(50) – Table destination des logs
, @RESULTAT varchar(4000) – Prsentation des informations collectes
SET @ServeurSOURCE = 'localhost'
SET @SOURCELOG ='System'
SET @BaseDESTINATION = 'msdb'
SET @TableDESTINATION ='T_EVTLOG'
SET @cnxDESTINATION ='-Database:'+@baseDESTINATION + ' -Driver:"SQL Server" -CreateTable:ON -ignoreMinWarns:OFF -maxStrFieldLen:8000'
–Collecter les erreurs SQL
SET @REQUETELOGPARSER ='"SELECT TimeGenerated,Message INTO ' + @TableDESTINATION +' FROM '+ @SOURCELOG +' WHERE Message LIKE ''%SQL%''and EventType=1 ORDER BY TimeGenerated DESC"'
SET @RESULTAT = 'SELECT * FROM '+ @baseDESTINATION + '.dbo.' + @TableDESTINATION
SET @CMD = 'logparser.exe -i:EVT -stats:OFF -o:SQL '+ @REQUETELOGPARSER + ' -Server:'+ @ServeurSOURCE + ' '+@cnxDESTINATION
–PRINT @CMD
–PRINT @RESULTAT
EXEC master..xp_cmdshell @CMD
–Prsenter les rsultats
EXECUTE (@RESULTAT)
END