Configurer SQL Server Analysis Services pour générer des fichiers de vidage mémoire

Cet article explique comment configurer SQL Server Analysis Services pour générer automatiquement des fichiers de vidage mémoire.

Version du produit d’origine : SQL Server
Numéro de la base de connaissances d’origine : 919711

Introduction

Cet article explique comment configurer des builds Microsoft SQL Server Analysis Services (SSAS) 2012 ou ultérieures pour générer automatiquement différents types de fichiers de vidage mémoire lorsqu’il rencontre des exceptions. L’article explique également comment utiliser l’utilitaire Sqldumper.exe pour obtenir manuellement un fichier de vidage mémoire pour le processus de SQL Server Analysis Services.

Plus d’informations

Par défaut, SQL Server Analysis Services génère automatiquement des fichiers minidump lorsqu’une exception se produit. Pour l’installation par défaut, les fichiers minidump sont écrits à l’emplacement par défaut :

Version d'Analysis Services Emplacement
2019 %ProgramFiles%\Microsoft SQL Server\MSAS15.InstanceName\OLAP\log
2017 %ProgramFiles%\Microsoft SQL Server\MSAS14.InstanceName\OLAP\log
2016 %ProgramFiles%\Microsoft SQL Server MSAS13.InstanceName\OLAP\log
2014 %ProgramFiles%\Microsoft SQL Server MSAS12.InstanceName\OLAP\log
2012 %ProgramFiles%\Microsoft SQL Server MSAS11.InstanceName\OLAP\log

Remarque

InstanceName est un espace réservé pour la valeur correspondante pour SQL Server Analysis Services version.

L’emplacement du journal SQL Server Analysis Services instance peut être modifié après l’installation. Vous pouvez donc vérifier l’emplacement du journal en consultant le fichier msmdsrv.ini de l’SQL Server Analysis Services installé.

Pour déterminer la valeur correspondante pour le système, déterminez la valeur de la clé de registre ImagePath, elle doit contenir le chemin d’accès à la configuration qui contient le msmdsrv.ini.

Version d'Analysis Services Sous-clé de Registre
Instance par défaut HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServerOLAPService\ImagePath
Instance nommée HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSOLAP$InstanceName\ImagePath

Les fichiers minidump incluent les informations suivantes :

  • Toutes les piles de threads

  • Mémoire de second ordre référencée par des pointeurs sur la pile

  • Informations sur le bloc d’environnement de processus (PEB)

  • Informations sur le bloc d’environnement de thread (TEB)

  • Informations sur les modules récemment déchargés

  • Informations sur l’état du thread

La section Exception du fichier Msmdsrv.ini contrôle la génération du fichier de vidage mémoire. Le fichier par défaut se trouve dans le %ProgramFiles%\Microsoft SQL Server\MSASxx.InstanceName\OLAP\Config dossier . MSASxx est un espace réservé pour la version correspondante pour SQL Server Analysis Service. Lorsque vous ouvrez le fichier dans le Bloc-notes, vous remarquez une section dans la balise EXCEPTION XML qui ressemble à ce qui suit :

<Exception>
<CreateAndSendCrashReports>1</CreateAndSendCrashReports>
<CrashReportsFolder/>
<SQLDumperFlagsOn>0x0</SQLDumperFlagsOn>
<SQLDumperFlagsOff>0x0</SQLDumperFlagsOff>
<MiniDumpFlagsOn>0x0</MiniDumpFlagsOn>
<MiniDumpFlagsOff>0x0</MiniDumpFlagsOff>
<MinidumpErrorList>0xC1000000, 0xC1000001, 0xC1000016, 0xC11D0005, 0xC102003F</MinidumpErrorList>
<ExceptionHandlingMode>0</ExceptionHandlingMode>
<CriticalErrorHandling>1</CriticalErrorHandling>
</Exception>

Vous pouvez contrôler le comportement de génération du fichier de vidage mémoire en modifiant les paramètres de cette section. Vous pouvez également modifier ces paramètres dans SQL Server Management Studio. Pour plus d’informations sur ces paramètres, visitez le site web de téléchargement SQL Server Management Studio : Propriétés du journal.

Désactiver le fichier de vidage mémoire automatique pour Analysis Services

La valeur du paramètre CreateAndSendCrashReports détermine si un fichier de vidage mémoire sera généré. Ce paramètre peut avoir l’une des valeurs répertoriées dans le tableau suivant.

Valeur Description
0 Cette valeur spécifie qu’Analysis Services ne génère aucun fichier de vidage mémoire. En outre, la valeur des autres paramètres sous la section Exception est ignorée.
1 Cette valeur par défaut active le fichier de vidage mémoire. Toutefois, SQL Server Analysis Services n’envoie pas de rapport d’erreurs à Microsoft.
2 Cette valeur spécifie que SQL Server Analysis Services génère un fichier de vidage mémoire et envoie un rapport d’erreurs à Microsoft.

Lorsque le paramètre CreateAndSendCrashReports est défini sur 1 ou 2, les autres paramètres de la section Exception peuvent contrôler le type du fichier de vidage mémoire et les informations à inclure dans le fichier de vidage mémoire.

Configurer SQL Server Analysis Services pour générer automatiquement un fichier de vidage complet

Pour configurer SQL Server Analysis Services générer automatiquement un fichier de vidage complet lorsqu’une exception se produit, vous pouvez définir le paramètre SQLDumperFlagsOn sur 0x34. En outre, si vous souhaitez configurer SQL Server Analysis Services pour générer un fichier de vidage complet qui inclut les informations de handle, vous pouvez définir le paramètre SQLDumperFlagsOn sur 0x34 et le paramètre MiniDumpFlagsOn sur 0x4. Par exemple, la section Exception dans le fichier Msmdsrv.ini peut ressembler à ce qui suit :

<Exception>
<CreateAndSendCrashReports>1</CreateAndSendCrashReports>
<CrashReportsFolder/>
<SQLDumperFlagsOn>0x34</SQLDumperFlagsOn>
<SQLDumperFlagsOff>0x0</SQLDumperFlagsOff>
<MiniDumpFlagsOn>0x4</MiniDumpFlagsOn>
<MiniDumpFlagsOff>0x0</MiniDumpFlagsOff>
<MinidumpErrorList>0xC1000000, 0xC1000001, 0xC1000016, 0xC11D0005, 0xC102003F</MinidumpErrorList>
<ExceptionHandlingMode>0</ExceptionHandlingMode>
<CriticalErrorHandling>1</CriticalErrorHandling>
</Exception>

Générer un fichier de vidage complet qui inclut les informations de gestion manuelle

Pour résoudre des problèmes tels qu’un serveur qui cesse de répondre (se bloque), vous pouvez générer un fichier de vidage complet qui inclut le traitement manuel des informations. Pour ce faire, vous pouvez exécuter l’utilitaire Sqldumper.exe à l’invite de commandes avec les arguments suivants :

Sqldumper.exe PID 0 0x34:0x4 0 PathToDumpFile

Remarque

PID représente l’ID de processus du processus SQL Server Analysis Services. PathToDumpFile représente le dossier dans lequel le fichier de vidage est écrit.

Vous devez exécuter cette commande à partir du répertoire partagé où vous avez installé le instance, ou vous devez spécifier le chemin d’accès complet du fichier Sqldumper.exe dans la commande.

Version d'Analysis Services Emplacement
2019 %ProgramFiles%\Microsoft SQL Server\150\Shared
2017 %ProgramFiles%\Microsoft SQL Server\140\Shared
2016 %ProgramFiles%\Microsoft SQL Server\130\Shared
2014 %ProgramFiles%\Microsoft SQL Server\120\Shared
2012 %ProgramFiles%\Microsoft SQL Server\110\Shared

Par exemple, le répertoire par défaut à exécuter sqldumper.exe pour SQL Server Analysis Services 2019 est C:\Program Files\Microsoft SQL Server\1590\Shared.

Informations supplémentaires

Vous pouvez utiliser le paramètre SQLDumperFlagsOn pour spécifier les différents indicateurs SQLDumper. Le tableau suivant répertorie les valeurs du masque de bits que vous pouvez utiliser comme valeur pour le paramètre flag.

Nom mnémonique Valeur hexadécimale Description
SQLDUMPER_DBGBREAK 0x0001 Cet indicateur amène l’utilitaire Sqldumper.exe à exécuter l’appel de l’API DebugBreak au début du programme lorsque les paramètres sont analysés. En règle générale, les professionnels des services de support technique Microsoft n’utilisent pas cet indicateur, car l’indicateur est utilisé uniquement pour déboguer Sqldumper.exe problèmes d’utilitaire.
Note Cet indicateur entre dans le processus de Sqldumper.exe. Cet indicateur n’entre pas dans le processus que l’utilitaire Sqldumper.exe débogue.
SQLDUMPER_NOMINIDUMP 0x0002 Lorsque vous utilisez cet indicateur, l’utilitaire Sqldumper.exe ne génère pas de fichier de vidage. Cet indicateur est utilisé pour tester l’utilitaire Sqldumper.exe.
SQLDUMPER_NOWATSON 0x0004 En règle générale, cet indicateur est utilisé lorsque vous générez manuellement des fichiers de vidage. Cet indicateur remplace le comportement de rapport d’erreurs par défaut. Par défaut, le fichier de vidage est envoyé au site de rapport d’erreurs configuré dans le Registre.
SQLDUMPER_REFERENCED_MEMORY 0x0008 Cet indicateur amène l’utilitaire Sqldumper.exe à définir l’indicateur MiniDumpWithIndirectlyReferencedMemory pour le paramètre MiniDumpType lorsqu’il appelle la fonction MiniDumpWritedump. La mémoire des pointeurs (un seul niveau) basés sur une pile (paramètres ou variables locales) sera stockée dans le fichier de vidage. Les tests révèlent que certains paramètres locaux basés sur des données de stockage local de thread (TLS), tels que le schéma de signature probabiliste (PSS) et les structures EC, ne semblent pas fonctionner même lorsque vous définissez cet indicateur.
SQLDUMPER_ALL_MEMORY 0x0010 Cet indicateur amène l’utilitaire Sqldumper.exe à définir l’indicateurMiniDumpWithFullMemory pour MiniDumpType lorsque l’utilitaire appelle la fonction MiniDumpWriteDump. Ce comportement est identique à l’utilisation de la commande .dump /mf sous le débogueur. Toutefois, vous devez également avoir l’indicateur SQLDUMPER_DUMP_ALL_THREADS défini sur activé pour vous assurer que toutes les piles de threads sont incluses.
SQLDUMPER_DUMP_ALL_THREADS 0x0020 Cet indicateur n’est pas obligatoire lorsque vous exécutez manuellement l’utilitaire Sqldumper.exe et que vous spécifiez une valeur de paramètre ThreadId de 0. Une valeur de paramètre ThreadId de 0 indique que tous les threads doivent être vidés. Si vous spécifiez une valeur de paramètre ThreadId différente de zéro, mais que vous utilisez également cet indicateur, tous les threads sont écrits dans le fichier de vidage. Cet indicateur existe, car le comportement typique dans le processus de Sqlservr.exe consiste à transmettre la valeur de propriété ThreadId actuelle du thread qui génère le processus Sqlservr.exe. Lorsque ce comportement se produit, l’indicateur est nécessaire comme option pour vider tous les threads.
SQLDUMPER_MATCH_FILE_NAME 0x0040 Vous pouvez utiliser cet indicateur pour essayer de forcer l’utilitaire Sqldumper.exe à générer un nom de fichier de vidage qui ressemble à une convention de nommage spécifique. Cette convention d’affectation de noms spécifique peut être basée sur un nom de fichier existant. Étant donné que vous devez configurer une structure de mémoire spéciale qui contient le nom de fichier existant dans votre propre programme, puis passer ce pointeur à l’utilitaire Sqldumper.exe en tant que paramètre SqlInfoPtr, cet indicateur n’est pas utile lorsque vous exécutez manuellement l’utilitaire Sqldumper.exe.
SQLDUMPER_SKIP_DW_REG_READ 0x0080 Cet indicateur empêche l’utilitaire Sqldumper.exe d’utiliser le Registre comme chemin d’exécution du programme Dw15.exe. Le programme Dw15.exe est utilisé pour charger les fichiers de vidage sur le site de rapport d’erreurs.
SQLDUMPER_VERBOSE 0x0100 Cet indicateur peut être utile si vous n’êtes pas sûr des paramètres que l’utilitaire Sqldumper.exe pense être utilisés comme entrée. Lorsque vous utilisez cet indicateur, l’utilitaire Sqldumper.exe affiche les valeurs des paramètres et le nombre de valeurs de paramètre spécifiées à partir de la ligne de commande.
SQLDUMPER_WAIT_AT_EXIT 0x0200 Vous pouvez utiliser cet indicateur pour attacher un débogueur à l’utilitaire Sqldumper.exe. Vous pouvez utiliser ce débogueur pour résoudre les problèmes liés à l’utilitaire Sqldumper.exe. Ces problèmes peuvent se produire en particulier lorsque l’utilitaire Sqldumper.exe est généré par Sqlservr.exe ou par un autre programme. Lorsque vous définissez cet indicateur, l’utilitaire Sqldumper.exe appelle la fonction SleepEx pendant 15 secondes juste avant que le programme Sqldumper.exe existe et une fois toutes les autres opérations terminées.
SQLDUMPER_FILTERED 0x0800 Vous pouvez utiliser cet indicateur pour générer un fichier de vidage filtré. SQL Server Analysis Services ne prend pas encore en charge cet indicateur.

Vous pouvez utiliser le paramètre MiniDumpFlagsOn pour fournir des indicateurs de minidump. Le tableau suivant répertorie les indicateurs minidump disponibles :

Option Valeur Description
MiniDumpNormal 0x00000000 Créez un fichier de mini-vidage classique qui utilise le remplacement.
MiniDumpWithDataSegs 0x00000001 Incluez un segment de données pour tous les modules chargés. Indicateur que les modules chargés récupèrent les variables globales.
MiniDumpWithFullMemory 0x00000002 Créez un fichier de vidage utilisateur complet. Un fichier de vidage filtré est désactivé lorsque l’indicateur est défini.
MiniDumpWithHandleData 0x00000004 Inclure les informations de handle.
MiniDumpFilterMemory 0x00000010 La mémoire de la pile et du magasin de stockage doit être analysée pour rechercher les références de pointeur aux modules dans la liste des modules. L’utilisateur ne doit pas utiliser cet indicateur pour SQL Server Analysis Services.
MiniDumpWithUnloadedModules 0x00000020 Cet indicateur fournit des informations sur les modules récemment déchargés. Seuls Microsoft Windows XP et Microsoft Windows Server 2003 prennent en charge cet indicateur. Le système d’exploitation ne conserve pas d’informations pour les modules déchargés avant Windows Server 2003 Service Pack 1 (SP1) et Windows XP Service Pack 2 (SP2).
MiniDumpWithIndirectlyReferencedMemory 0x00000040 Incluez les pages qui ont des données référencées par des éléments locaux ou par une autre mémoire de pile.
MiniDumpFilterModulePaths 0x00000080 Si le chemin du module est supprimé des informations du module, n’utilisez pas cet indicateur.
MiniDumpWithProcessThreadData 0x00000100 Cet indicateur fournit des informations sur le bloc d’environnement de processus (PEB) et le bloc d’environnement de thread (TEB).
MiniDumpWithPrivateReadWriteMemory 0x00000200 Analysez l’espace d’adressage virtuel à la recherche d’autres types de mémoire à inclure.
MiniDumpWithoutOptionalData 0x00000400 Réduisez les données qui sont vidées en éliminant les régions de mémoire qui ne sont pas nécessaires. Effectuez cette opération pour répondre aux critères spécifiés pour le fichier de vidage. L’utilisation de cet indicateur peut éviter de vider la mémoire qui peut contenir des données privées à l’utilisateur. Toutefois, cela ne garantit pas qu’aucune information privée ne sera présente. N’utilisez pas cet indicateur.
MiniDumpWithFullMemoryInfo 0x00000800 Incluez des informations descriptives sur la région de mémoire énumérée.
MiniDumpWithThreadInfo 0x00001000 Incluez les informations d’état du thread.
MiniDumpWithCodeSegs 0x00002000 Incluez le code et les sections relatives au code pour tous les modules chargés.

References

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