[SQL Server] Comment utiliser l'utilitaire Sqldumper.exe pour générer un fichier de vidage dans SQL Server

Comment utiliser l'utilitaire Sqldumper.exe pour générer un fichier de vidage dans SQL Server

S'applique à: SQL Server 2012 Standard SQL Server 2012 Enterprise SQL Server 2012 Developer Plus


Résumé

 

Source : https://support.microsoft.com/en-us/help/917825/use-the-sqldumper-exe-utility-to-generate-a-dump-file-in-sql-server

L'utilitaire Sqldumper.exe est inclus avec Microsoft SQL Server. Cet article décrit comment utiliser l'utilitaire Sqldumper.exe pour générer un fichier de vidage pour le rapport d'erreurs Watson ou pour les tâches de débogage.

Notes

Outre l'utilitaire Sqldumper.exe, les méthodes suivantes sont également disponibles:

·        Vous pouvez utiliser la  DBCC STACKDUMP commande  pour générer un fichier de vidage dans SQL Server. Pour plus d'informations, consultez Comment utiliser DBCC STACKDUMP dans la section plus d'informations.

·        Vous pouvez également utiliser un script Powershell pour automatiser la ligne de commande SQLDumper. Pour plus d'informations, consultez Comment utiliser le script Powershell pour générer un fichier de vidage  dans la section plus d'informations.

Avertissement La génération de fichiers de vidage de processus peut affecter la disponibilité du service (ici SQL Server) et déclencher des basculements de ressources dans des contextes Always On (instance de cluster de basculement et groupe de disponibilité). Les options utilisées pour générer les fichiers de vidage feront une grande différence. Assurez-vous de lire les   sections Impact de la génération de vidage  et des types de vidage .

Lorsque vous capturez un fichier de vidage de processus SQL Server (en particulier un fichier de vidage filtré ou un fichier de vidage complet) sur un serveur SQL cluster ou un serveur SQL hébergeant une instance AlwaysOn Availability Group (AG), le serveur SQL ou cluster cluster peut basculer vers un autre nœud si le fichier de vidage prend trop de temps pour être terminé. Pour éviter le basculement potentiel, vous pouvez utiliser les paramètres suivants avant de capturer le fichier de vidage et vous pouvez annuler la modification après la prise d'un fichier de vidage:

·        Pour SQL Server en cluster (FCI), cliquez avec le bouton droit sur la ressource SQL Server dans l'Administrateur de cluster, sélectionnez «Si la ressource échoue, ne redémarrez pas» sous l'  onglet Stratégies .

·        Pour AG, appliquez tous les paramètres suivants:

·        Augmentez le délai d'expiration de la session, par exemple, de 120 secondes pour toutes les répliques. Dans SQL Server Management Studio, cliquez avec le bouton droit sur la réplique à configurer, puis cliquez sur Propriétés . Définissez le champ Session-Timeout (seconds) sur 120 secondes. Pour plus d'informations, consultez Modifier la période d'expiration de session pour un réplica de disponibilité (SQL Server) .

·        Remplacez le «basculement automatique» de toutes les répliques par «basculement manuel». Dans SQL Server Management Studio, cliquez avec le bouton droit sur la réplique, sélectionnez Propriétés , puis modifiez le «basculement automatique» de toutes les réplicas en «basculement manuel» sous l' onglet Propriétés . Pour plus d'informations, consultez  Modifier le mode de basculement d'un réplica de disponibilité (SQL Server) .

·        Augmentez le "LeaseTimeout" à 60 000 ms (60 secondes) et modifiez HealthCheckTimeout à 90 000 ms (90 secondes). Dans l'Administrateur de cluster, cliquez avec le bouton droit sur la ressource AG, sélectionnez Propriétés , puis basculez vers l' onglet Propriétés pour modifier les deux paramètres. Pour plus d'informations, voir  Configurer les paramètres de propriété HealthCheckTimeout .

Plus d'information


Comment exécuter l'utilitaire Sqldumper.exe manuellement

Exécutez l'utilitaire Sqldumper.exe dans le contexte du dossier dans lequel SQL Server a initialement installé l'utilitaire. Par défaut, le chemin d'installation de l'utilitaire Sqldumper.exe est le suivant:

SQLServerInstallDrive : \ Program Files \ Microsoft SQL Server \ 90 \ Shared \ SQLDumper.exe

Remarque SQLServerInstallDrive est un espace réservé pour le lecteur sur lequel vous avez installé SQL Server 2005.

Pour générer un fichier de vidage à l'aide de l'utilitaire Sqldumper.exe, procédez comme suit:
 

1.     Ouvrez le dossier suivant:

SQLServerInstallDrive : \ Program Files \ Microsoft SQL Server \ number \ Shared

Remarque Dans ce chemin de dossier, number est un espace réservé pour l'un des éléments suivants:

·        140 pour SQL Server 2017

·        130 pour SQL Server 2016

·        120 pour SQL Server 2014

·        110 pour SQL Server 2012

·        100 pour SQL Server 2008

·        90 pour SQL Server 2005

2.     Assurez-vous que le fichier Dbghelp.dll se trouve dans ce dossier.

3.     Cliquez sur Démarrer , sur Exécuter , tapez cmd , puis cliquez sur OK .

4.     À l'invite de commandes, tapez la commande suivante, puis appuyez sur ENTRÉE: Remarque Dans ce chemin de dossier, le numéro est le même espace réservé changeant avec la version de SQL Server comme décrit précédemment.

cd SQLServerInstallDrive:\Program Files\Microsoft SQL Server\number\Shared


5.     Pour générer un type spécifique de fichier de vidage, tapez la commande correspondante à l'invite de commandes, puis appuyez sur ENTRÉE:

·        Fichier de vidage complet

Sqldumper.exe ProcessID 0 0x01100

·        Mini-fichier de vidage

Sqldumper.exe ProcessID 0 0x0120

·        Mini-fichier de vidage qui comprend une mémoire référencée indirectement. Il s'agit de l'option recommandée et elle est également utilisée par SQL Server par défaut lors de la génération automatique de vidages de mémoire

Sqldumper.exe ProcessID 0 0x0128

·        Fichier de vidage filtré

Sqldumper.exe ProcessID 0 0x8100

6.     Remarque ProcessID est un espace réservé pour l'identificateur de processus de l'application Windows pour laquelle vous souhaitez générer un fichier de vidage.

Si l'utilitaire Sqldumper.exe s'exécute correctement, l'utilitaire génère un fichier de vidage dans le dossier où l'utilitaire est installé.

Le fichier de vidage généré par l'utilitaire Sqldumper.exe a un modèle de nom de fichier semblable au suivant:

SQLDmpr xxxx .mdmp

Dans ce modèle, xxxx est un nombre croissant qui est déterminé en fonction d'autres fichiers qui ont un nom de fichier similaire dans le même dossier. Si vous avez déjà des fichiers dans le dossier qui ont des noms de fichiers dans le modèle spécifié, vous devrez peut-être comparer la date et l'heure de création du fichier pour identifier le fichier souhaité.

Informations et considérations supplémentaires

SQLDumper.exe existe principalement pour générer des vidages de mémoire pour le processus SQL Server dans les scénarios où un vidage de mémoire est nécessaire pour résoudre des problèmes spécifiques (exceptions, assertions, planificateurs non productifs, etc.). Dans de tels cas, SQL Server appelle SQLDumper.exe pour générer un vidage de mémoire de son processus. Le vidage de mémoire est stocké dans un chemin d'accès configuré dans le  Gestionnaire de configuration SQL Server  avec un répertoire par défaut MSSQL \ LOG \. Si, dans certains cas, la taille de vidage est trop grande, par exemple, vous pouvez modifier le chemin d'accès en procédant comme suit: 

1.     Ouvrez le  Gestionnaire de configuration SQL Server

2.     Sous  Services  SQL Server, recherchez le serveur SQL sous enquête

3.     Faites un clic droit dessus, choisissez  Propriétés  et allez dans l'   onglet Avancé

4.     Modifiez ce répertoire de vidage sur le chemin souhaité et cliquez sur OK

5.     Redémarrez SQL Server (si possible) pour que le nouveau paramètre prenne effet.

Lorsque l'utilitaire Sqldumper.exe est utilisé manuellement pour générer un fichier de vidage pour n'importe quelle application Windows, le fichier de vidage peut être aussi volumineux que la mémoire que l'application Windows utilise actuellement. Assurez-vous qu'un espace disque suffisant est disponible sur le lecteur sur lequel l'utilitaire Sqldumper.exe écrit le fichier de vidage.

Vous pouvez spécifier le répertoire dans lequel vous souhaitez que l'utilitaire Sqldumper.exe écrive le fichier de vidage. Le répertoire doit déjà exister avant d'exécuter l'utilitaire Sqldumper.exe. Sinon, l'utilitaire Sqldumper.exe échouera. N'utilisez pas de chemin UNC comme emplacement pour le fichier de vidage. Voici un exemple de la façon de spécifier l'emplacement du fichier de vidage du fichier de mini-vidage:

1.     Cliquez sur Démarrer , sur Exécuter , tapez cmd , puis cliquez sur OK .

2.     À l'invite de commandes, tapez la commande suivante et appuyez sur ENTRÉE:

cd SQLServerInstallDrive:\Program Files\Microsoft SQL Server\number\Shared

Remarque Dans ce chemin de dossier, nombre est un espace réservé pour l'un des éléments suivants:

·        140 pour SQL Server 2017

·        130 pour SQL Server 2016

·        120 pour SQL Server 2014

·        110 pour SQL Server 2012

·        100 pour SQL Server 2008

·        90 pour SQL Server 2005

3.     Tapez la commande suivante à l'invite de commandes et appuyez sur ENTRÉE: Remarque MdumpPath  est un espace réservé pour le répertoire dans lequel vous souhaitez que l'utilitaire Sqldumper.exe écrive le fichier de vidage. Par défaut, le fichier est écrit dans le dossier actuel.

Sqldumper.exe ProcessID 0 0x0128 0 MdumpPath


Si vous spécifiez un fichier de vidage complet ou un fichier de vidage filtré à générer, l'utilitaire Sqldumper.exe peut prendre plusieurs minutes pour générer le fichier de vidage. Le temps dépend des variables suivantes:

·        La quantité de mémoire que l'utilitaire Sqldumper.exe utilise actuellement

·        La vitesse du lecteur sur lequel l'utilitaire écrit le fichier de vidage

Pendant ce temps, l'utilitaire Sqldumper.exe ne traitera pas les commandes. Vous remarquerez que le serveur ne répond plus. En outre, un basculement de cluster peut se produire.

Pour exécuter l'utilitaire Sqldumper.exe, vous devez vous connecter à Windows en utilisant l'une des méthodes suivantes:

·        Utilisez un compte membre du groupe d'administrateurs sur l'ordinateur.

·        Utilisez le même compte d'utilisateur sous lequel le service SQL Server s'exécute.

Pour que l'utilitaire Sqldumper.exe fonctionne correctement via le bureau à distance ou via les services Terminal Server, vous devez démarrer le bureau à distance ou les services Terminal Server en mode console. Par exemple, pour démarrer le Bureau à distance en mode console, cliquez sur Démarrer , sur Exécuter , tapez mstsc / console , puis cliquez sur OK . N'oubliez pas que si le serveur cible exécute Windows 2000, l' option / console est silencieusement ignorée. Vous pouvez vous connecter au serveur via Remote Desktop. Mais vous n'utiliserez pas la session de console.

Si vous remarquez qu'aucun fichier de vidage n'a été généré dans le dossier en cours après avoir exécuté l'utilitaire Sqldumper.exe, consultez les informations que l'utilitaire a générées sur la ligne de commande pour essayer de déterminer la cause possible de l'échec. Ces informations sont également enregistrées dans le fichier Sqldumper_errorlog.log dans le répertoire en cours. Voici deux messages d'erreur possibles et leurs causes:

Message 1

OpenProcess a échoué 0x57 - Le paramètre est incorrect


Un ID de processus non valide a été transmis à l'utilitaire Sqldumper.exe.

Message 2

Valeur non valide pour l'ID de thread - <paramètre non valide> Erreur de paramètre


Un paramètre non valide a été transmis à l'utilitaire Sqldumper.exe.

Si un message d'erreur semblable à l'un des suivants est généré, vous pouvez ignorer ce message en toute sécurité:
 

Type de rappel inconnu pendant le minidump 6
Type de rappel inconnu pendant le minidump 7

Impact de la génération de vidage

Lorsqu'un vidage d'un processus en mode utilisateur est demandé (comme expliqué dans cet article, pour être contrasté avec les vidages du noyau du système d'exploitation qui sont en dehors de notre portée), le processus cible (ici SQLServer.exe) est complètement gelé pour la durée qu'il prend pour sérialiser le contenu du vidage vers sa cible de fichier.

Gelé signifie qu'il ne sera pas en mesure de traiter une demande utilisateur ou de faire progresser une opération interne, y compris tout mécanisme d'interrogation des ressources comme la mise en œuvre d'IsAlive et de LooksAlive de Windows Clustering (voir la section `` Basculements de cluster et l'utilitaire Sqldumper.exe '' pour plus de détails sur la gestion cette situation). Tout délai d'attente reposant sur l'heure de l'horloge murale peut également être violé en raison du gel.

Comme on peut le déduire de la déclaration précédente, la durée du gel est donc ici le facteur critique, et elle est principalement due aux éléments suivants:

·        Le type de vidage sélectionné

·        La taille du processus SQL Server en mémoire , qui, dans le cas d'une seule instance active exécutant des paramètres par défaut, est souvent proche de la RAM physique totale du serveur .

·        Les performances du disque utilisé comme cible pour le vidage.

En outre, la taille du fichier de vidage sur le disque doit être planifiée, en particulier si plusieurs vidages sont possibles et si de grands types de vidage non par défaut sont sélectionnés. Assurez-vous de consulter la section «Types de vidage»  pour savoir à quoi vous attendre. Par défaut, certaines méthodes de vidage créent le vidage dans le dossier \ Log de l'instance SQL Server, qui, dans la configuration simple par défaut, serait également le disque système et le disque de données + journal pour SQL Server. Amener ce disque à saturation aura un impact grave sur SQL Server et / ou la disponibilité du système.

Trois améliorations majeures ont été ajoutées aux versions récentes de SQL Server pour réduire la taille du fichier de vidage et / ou le temps de génération du vidage de mémoire:

·        Mécanisme de filtrage bitmap

·        Élimination des décharges répétées sur le même problème

·        Sortie raccourcie dans le journal des erreurs

 

Filtrage bitmap : une vitesse de vidage filtrée améliorée et une taille réduite ont été obtenues grâce à un nouveau mécanisme de filtrage bitmap qui a été ajouté à SQL Server 2019 et SQL Server 2017.
SQL Server alloue un bitmap qui garde la trace des pages mémoire à exclure d'un filtré déverser. Sqldumper.exe lit le bitmap et filtre les pages sans avoir à lire les autres métadonnées du gestionnaire de mémoire. Vous verrez les messages suivants dans le journal des erreurs SQL Server lorsque le bitmap est respectivement activé ou désactivé: «Le bitmap d'exclusion de page est activé». et "Le bitmap d'exclusion de pages est désactivé."


SQL Server 2017

·        Ce n'est pas disponible dans RTM via CU15

·        Dans SQL Server 2017 CU16, vous pouvez activer le filtrage bitmap via T8089 et le désactiver en désactivant T8089

·        À partir de SQL Server 2017 CU20, le filtrage bitmap est activé par défaut. L'indicateur de trace T8089 ne s'appliquera plus et sera ignoré s'il est activé. Le filtrage bitmap peut être désactivé via T8095.

SQL Server 2019

Ceci est activé par défaut dans SQL Server 2019 RTM. Il peut être désactivé via T8095.

 

Élimination des décharges répétées sur la même question:   R epeated image mémoire sur le même problème sont maintenant éliminés. À l'aide d'une signature de pile, le moteur SQL garde une trace si une exception s'est déjà produite et ne produira pas de nouveau vidage de mémoire s'il y en a déjà une. Cela s'applique aux violations d'accès, au débordement de pile, aux assertions et aux exceptions de corruption d'index. Cela réduit considérablement la quantité d'espace disque utilisé par les vidages de mémoire et ne gèle pas le processus temporairement pour générer un vidage. Cela a été ajouté dans SQL Server 2019.

 

Sortie raccourcie dans le journal des erreurs : le contenu généré dans le journal des erreurs SQL Server à partir d'un vidage de mémoire unique peut non seulement être écrasant, mais il a également ralenti le processus de génération d'un vidage de mémoire en raison du temps que toutes ces informations devaient être sérialisées en texte format dans le journal des erreurs. Dans SQL Server 2019, le contenu stocké dans le journal des erreurs lors de la génération de vidage a été considérablement réduit et il peut ressembler à ceci:

 

DateTime spid pid    ** Fil de vidage - spid = 0, EC = 0x0000015C7169BF40

DateTime spid pid    *

DateTime spid pid    * Vidage de pile initié par l'utilisateur. Ce n'est pas un vidage d'exception de serveur.

DateTime spid pid    *

DateTime spid pid La    signature de pile pour le vidage est 0x00000000788399E5

DateTime spid pid    Code de retour du processus de vidage externe 0x20000001.

Le processus de vidage externe n'a renvoyé aucune erreur.

 

Auparavant, SQL Server imprimait des informations pour chaque session / thread lorsqu'un vidage manuel était déclenché par l'utilisateur par exemple. 

Types de vidage

Les méthodes décrites sont capables de générer trois types de vidages différents: les mini vidages, les vidages complets et les vidages filtrés.

Les mini vidages avec mémoire référencée sont un instantané de tous les threads actifs du processus ("piles de threads"), ainsi qu'un extrait limité de la mémoire référencée par les piles de threads et d'autres données clés de processus / thread. Ils mesurent généralement quelques mégaoctets et sont très rapides à générer (de moins d'une seconde à quelques secondes). Même les systèmes de serveurs plus grands (avec des centaines de CPU entraînant indirectement un nombre important de threads dans le processus SQL Server) dépasseront rarement 20 à 30 Mo: la taille d'un mini vidage n'augmente pas avec la taille du processus SQL Server. Ce type de vidage est le type par défaut utilisé par SQL Server lors de la génération automatique de vidages de mémoire sur les exceptions, les problèmes de planificateur, les problèmes de verrouillage, etc.

Notez que SQL Server, dans le cadre de son instrumentation intégrée, générera des «mini vidages de diagnostic» automatisés dans certaines situations spécifiques. Cette opération est donc considérée comme suffisamment sûre pour que SQL Server puisse la déclencher automatiquement en cas de besoin.

Les vidages complets sont une copie complète de l'espace de processus cible actif. Cela inclurait donc tous les états des threads, toute la mémoire allouée aux processus et tous les modules chargés. Les vidages complets auront donc une taille qui est à peu près la même que celle du processus SQL Server, qui à son tour peut être presque aussi grande que la RAM totale du système. Sur les grands serveurs dédiés à une seule instance SQL Server, cela peut signifier un fichier de plusieurs centaines de gigaoctets ou plus. Inutile de dire qu'un tel fichier sera long à générer et induira donc un gel prolongé. Les performances du disque pour la cible de fichier de vidage seront un pilote majeur pour figer le temps. Notez que ce type de vidage est très rarement utilisé pour SQL Server aujourd'hui , comme l'explique la prochaine description de type.

Vidages filtrés: la taille de la RAM des serveurs typiques exécutant SQL Server augmentant régulièrement, les vidages complets sont devenus de plus en plus lourds. Des vidages filtrés ont donc été implémentés: il s'agit d'un sous-ensemble de vidages complets, où de grandes zones de structures de mémoire appartenant à SQL Server sont délibérément ignorées et non sérialisées sur le disque car elles n'apportent aucune valeur ajoutée de dépannage (généralement, les pages de données / d'index, certains caches internes comme les pages de données Hekaton et la mémoire du pool de journaux ). Cela se traduit par un fichier plus petit qu'un vidage complet tout en conservant presque toute son utilité, et cela a remplacé les vidages complets comme option préférée dans la grande majorité des situations où les mini vidages n'étaient pas suffisants.. La diminution de la taille par rapport au vidage complet peut varier considérablement, mais il s'agit toujours d'un fichier assez volumineux qui représente souvent 30 à 60% de la taille du processus SQL Server, il est donc préférable de prévoir une taille possible aussi grande qu'un vidage complet comme pire option , ce qui devrait laisser une bonne marge de sécurité. Notez qu'un vidage filtré peut ne pas être nécessairement plus rapide à générer qu'un vidage complet dans tous les cas: il s'agit de savoir si les gains liés au nombre d'E / S évitées dépassent le temps requis pour implémenter la logique de filtrage (donc la vitesse du disque et le CPU / La vitesse de la RAM influencera cela).

Vous pouvez utiliser l'utilitaire Sqldumper.exe pour générer un fichier de vidage à la demande pour toute application Microsoft Windows. Par exemple, vous pouvez générer un fichier de vidage pour déboguer un problème d'application lorsqu'un ordinateur qui exécute Microsoft SQL Server ne répond pas aux demandes des utilisateurs. Un fichier de vidage peut être un mini-fichier de vidage ou un fichier de vidage complet. Un fichier de vidage filtré n'est applicable et significatif que dans le contexte de SQL Server .

Toutefois, vous ne pouvez pas utiliser l'utilitaire Sqldumper.exe pour le débogage à usage général. Pour plus d'informations sur le débogage à usage général, visitez le site Web Microsoft suivant:

http://www.microsoft.com/whdc/devtools/debugging/default.mspx

Le processus SQL Server appelle l'utilitaire Sqldumper.exe en interne pour générer un fichier de vidage lorsque le processus rencontre des exceptions. SQL Server transmet des indicateurs à l'utilitaire Sqldumper.exe. Vous pouvez utiliser des indicateurs de trace pour modifier les indicateurs que SQL Server transmet à l'utilitaire dans le contexte d'une exception ou dans le contexte d'une assertion. Ces indicateurs de trace sont compris entre 2540 et 2559. Vous pouvez utiliser ces indicateurs de trace pour générer certains types de fichiers de vidage. Par exemple:

·        Indicateur de trace 2551: produit un vidage de mémoire filtré

·        Indicateur de trace 2544: produit un vidage de mémoire complet

·        Indicateur de trace 8026: SQL Server effacera un déclencheur de vidage après avoir généré le vidage une fois

Si deux indicateurs de trace ou plus sont actifs, l'option indiquant le plus grand vidage de mémoire sera respectée. Par exemple, si les indicateurs de trace 2551 et 2544 sont utilisés, SQL Server créera un vidage de mémoire complet.

Comment obtenir un identifiant de processus d'application Microsoft Windows

Pour générer un fichier de vidage à l'aide de l'utilitaire Sqldumper.exe, vous devez disposer de l'identificateur de processus de l'application Windows pour laquelle vous souhaitez générer un fichier de vidage. Pour obtenir l'identificateur de processus, procédez comme suit:

1.     Appuyez sur CTRL + ALT + SUPPR, puis cliquez sur Gestionnaire des tâches .

2.     Dans la boîte de dialogue Gestionnaire des tâches de Windows , cliquez sur l' onglet Processus .

3.     Dans le menu Affichage , cliquez sur Sélectionner les colonnes .

4.     Dans la boîte de dialogue Sélectionner les colonnes , activez la case à cocher PID (Process Identifier) , puis cliquez sur OK .

5.     Notez l'identificateur de processus de l'application Windows pour laquelle vous souhaitez générer un fichier de vidage. Pour l'application SQL Server, notez l'identificateur de processus du processus Sqlservr.exe.

6.     Fermez le Gestionnaire des tâches .

Vous pouvez également obtenir l'identificateur de processus de l'application SQL Server qui s'exécute sur votre ordinateur en utilisant le fichier journal des erreurs SQL Server. Par exemple, une partie du fichier journal des erreurs SQL Server ressemble à ce qui suit:

 Serveur de date / heure Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Copyright de la

date / heure

(c) 1988-2005 Microsoft Corporation

Enterprise Edition sur Windows NT 5.2 (Build 3790: Service Pack 1) Serveur de


date / heure (c) 2005 Microsoft Corporation. Serveur de

date / heure Tous droits réservés.

Date / Time Server L'ID de processus du serveur est 3716.

Le nombre qui apparaît après l' ID de processus serveur est l'identificateur de processus pour le processus Sqlservr.exe.

Basculements de cluster et l'utilitaire Sqldumper.exe

Dans les scénarios de basculement de cluster, la DLL de ressource SQL Server peut désormais obtenir un fichier de vidage avant le basculement. Lorsque la DLL de ressource SQL Server détermine qu'une ressource SQL Server a échoué, la DLL de ressource SQL Server utilise l'utilitaire Sqldumper.exe pour obtenir un fichier de vidage du processus SQL Server. Pour vous assurer que l'utilitaire Sqldumper.exe génère correctement le fichier de vidage, vous devez définir les trois propriétés suivantes comme conditions préalables:

·        SqlDumperDumpTimeOut Délai d'expiration
spécifié par l'utilisateur. La DLL de ressource attend la fin du fichier de vidage avant que la DLL de ressource arrête le service SQL Server.

·        SqlDumperDumpPath
Emplacement où l'utilitaire Sqldumper.exe génère le fichier de vidage.

·        SqlDumperDumpFlags Indicateurs
que l'utilitaire Sqldumper.exe utilise.

Si l'une des propriétés n'est pas définie, l'utilitaire Sqldumper.exe ne peut pas générer le fichier de vidage. Un message d'avertissement sera enregistré à la fois dans le journal des événements et dans le journal du cluster chaque fois que la ressource est mise en ligne.

Pour SQL Server 2012 et versions ultérieures

Vous pouvez utiliser la commande ALTER SERVER CONFIGURATION (T-SQL) pour modifier ces propriétés. Par exemple:

ALTER SERVER CONFIGURATION set FAILOVER CLUSTER PROPERTY SqlDumperDumpTimeOut = 0;

ALTER SERVER CONFIGURATION set FAILOVER CLUSTER PROPERTY SqlDumperDumpPath = 'C: \ temp \';

ALTER SERVER CONFIGURATION set FAILOVER CLUSTER PROPERTY SqlDumperDumpPath = 296;

Vous pouvez également utiliser des scripts PowerShell. Par exemple, pour une instance nommée SQL2017A:

Get-ClusterResource -Name "SQL Server (SQL2017AG)" | Set-ClusterParameter -Name "SqlDumperDumpPath" -Value "C: \ temp"

Get-ClusterResource -Name "SQL Server (SQL2017AG)" | Set-ClusterParameter -Name "SqlDumperDumpFlags" -Value 296

Get-ClusterResource -Name "SQL Server (SQL2017AG)" | Set-ClusterParameter -Name "SqlDumperDumpTimeOut" -Value 0

Pour valider les paramètres appliqués, vous pouvez exécuter cette commande PowerShell:

Get-ClusterResource -Name "SQL Server (SQL2017AG)" | Get-ClusterParameter

Pour SQL Server 2008/2008 R2 ou Windows 2012 et versions antérieures

Comment utiliser DBCC STACKDUMP

La DBCC STACKDUMP commande peut vous aider à créer un vidage de mémoire dans le répertoire LOG de l'installation de votre instance SQL Server. La commande créera par défaut un minidump avec tous les threads qui a une taille limitée et est adéquat pour refléter l'état du processus SQL Server. Exécutez simplement la commande suivante dans un client SQL Server:

DBCC STACKDUMP

Pour activer cette méthode pour créer un vidage filtré, activez les indicateurs de trace 2551 avec la commande suivante:

dbcc traceon (2551, -1)

aller

 

dbcc stackdump

Pour créer un vidage complet, utilisez l'indicateur de trace 2544.

Remarque Après avoir obtenu le fichier de vidage, vous devez désactiver l'indicateur de trace à l'aide de la commande suivante pour éviter de mettre à niveau par inadvertance tous les autres mini-vidages d'autodiagnostic SQL Server vers des vidages plus volumineux:

DBCC TRACEOFF ( TraceNumber , -1);  

ALLER

tracenumber est l'indicateur de trace que vous avez précédemment activé, comme 2551 ou 2544.

Si vous ne savez pas quel indicateur de trace reste actif, vous pouvez exécuter:

DBCC TRACESTATUS(-1)

Un jeu de résultats vide indique qu'aucun traceflag n'est actif. Inversement, si 2551 est toujours actif, vous verrez:

Session globale d'état TraceFlag

--------- ------ ------ -------

2551 1 1 0

Remarque Les indicateurs de trace activés par DBCC TRACEON sont réinitialisés (supprimés) après un redémarrage du service.

Comment utiliser un script Powershell pour générer un fichier de vidage avec SQLDumper.exe

·        Enregistrez le code suivant en tant que fichier ps1, par exemple SQLDumpHelper.ps1:

Détails du code

·        Exécutez-le à partir de l'invite de commandes en tant qu'administrateur à l'aide de la commande suivante:

Powershell.exe -File SQLDumpHelper.ps1

·        Ou exécutez-le à partir de la console Windows PowerShell et exécutez en tant qu'administrateur à l'aide de la commande suivante:

. \ SQLDumpHelper.ps1

Remarque Si vous n'avez jamais exécuté de scripts PowerShell sur votre système, le message d'erreur suivant peut s'afficher:

Fichier… SQLDumpHelper.ps1 ne peut pas être chargé car l'exécution des scripts est désactivée sur ce système.

Vous devez activer la possibilité de les exécuter par les étapes suivantes:

1.     Démarrez la console Windows PowerShell avec l'option "Exécuter en tant qu'administrateur". Seuls les membres du groupe Administrateurs sur l'ordinateur peuvent modifier la stratégie d'exécution.

2.     Activez l'exécution de scripts non signés à l'aide de la commande suivante:

Set-ExecutionPolicy RemoteSigned

Remarque  Cela vous permettra d'exécuter des scripts non signés que vous créez sur votre ordinateur local et des scripts signés à partir d'Internet.