[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é
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 S pid
** Fil de vidage - spid = 0, EC = 0x0000015C7169BF40
DateTime spid S pid
*
DateTime spid S pid
* Vidage de pile initié par l'utilisateur. Ce n'est pas
un vidage d'exception de serveur.
DateTime spid S pid
*
DateTime spid S pid La
signature de pile pour le vidage est 0x00000000788399E5
DateTime spid S 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.
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
Où 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:
·
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.