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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour