[SQL Server] Générer un DUMP de la mémoire du serveur afin de tracer un arrêt brutal du service SQL Server

 

 

 

-- =============================================

-- Author:      Zouhaier KHARROUBI

-- Create date: 16/04/2020

-- Description: Générer un DUMP de la mémoire du serveur afin de tracer un arrêt brutal du service SQL Server.

-- =============================================

Deux indicateurs de trace qui permettent d'aider pour certains dépannage SQL Server. (Arrêt brutal du service SQL Server, Agent SQL Server … etc)

Ces deux indicateurs de trace permettent d'obtenir un vidage complet de la mémoire SQL Server à l'aide de la commande DBCC non documentée.

La commande DBCC STACKDUMP effectue le vidage de la mémoire de SQL Server.

Dans certaines situations et pour une analyse complète, il est nécessaire d’effectuer un vidage mémoire complet de SQL Server.

Il existe également d'autres options pour ce faire, mais on peut faire la même chose en utilisant la commande DBCC.

La commande DBCC accepte également le SPID ou l'ID utilisateur comme paramètre.

Donc si on veut générer un vidage mémoire complet, on doit s’assurer de passer ces paramètres sinon la taille du fichier sera grande et risque de perdre l'espace disque.

On fait un test, on doit d'abord exécuter la commande stackdump pour générer un mini fichier de vidage avec une partie de la mémoire.

On utilise la commande ci-dessous pour obtenir le fichier de vidage. Comme indiqué ci-dessous, vous pouvez voir qu'il a généré un mini vidage avec une portion de mémoire.

DBCC STACKDUMP

GO

Dans le journal de SQL Server on constate le message d’information ci-dessous :

Date                     16/04/2020 09:13:22

Journal                SQL Server (Archive n°1 - 16/04/2020 09:13:00)

Source                 spid117

Message

***Stack Dump being sent to C:\MSQL_MonInstanceSQLServer_001\Microsoft SQL Server\MSSQL11. MonInstanceSQLServer\MSSQL\LOG\SQLDump0013.mdmp

Dans le fichier généré, on constate le message ci-dessous :

Microsoft (R) Windows Debugger Version 6.12.0002.633 X86

Copyright (C) Microsoft Corporation. All rights reserved.

Loading Dump File [C:\MSQL_MonInstanceSQLServer_001\Microsoft SQL Server\MSSQL11. MonInstanceSQLServer\MSSQL\LOG\SQLDump0013.mdmp]

User Mini Dump File: Only registers. stack and portions of memory are avaible

Activons l'indicateur de trace pour obtenir un vidage de mémoire complet. Utilisez la commande ci-dessous. Vous pouvez voir qu'il a généré un mini vidage avec une mémoire complète.

DBCC TRACEON(2544,-1)

GO

DBCC TRACEON(2546,-1)

GO

DBCC STACKDUMP

GO

Dans le fichier généré on constate le message ci-dessous :

Microsoft (R) Windows Debugger Version 6.12.0002.633 X86

Copyright (C) Microsoft Corporation. All rights reserved.

Loading Dump File [C:\MSQL_MonInstanceSQLServer_001\Microsoft SQL Server\MSSQL11. MonInstanceSQLServer\MSSQL\LOG\SQLDump0015.mdmp]

User Mini Dump File with FULL Memory: Only application data is available

Pour générer uniquement un mini vidage de mémoire, on doit uniquement activer l'indicateur de trace 2546. Ainsi, l'utilisation de cet indicateur de trace nous donnera un vidage complet de la mémoire pour l'analyse ou bien le transmettra au support MS.