Utilisez l’outil Sqldumper.exe pour générer un fichier de vidage dans SQL Server

Cet article fournit des instructions générales pour l’outil Sqldumper.exe inclus dans SQL Server. Cet outil est utilisé pour générer différents types de fichiers de vidage.

Version du produit d’origine : SQL Server 2019, SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL Server 2008, SQL Server 2005
Numéro de la base de connaissances d’origine : 917825

Résumé

L’outil Sqldumper.exe est inclus dans Microsoft SQL Server. Il génère des fichiers de vidage mémoire de SQL Server et des processus associés pour le débogage. Cet article explique comment utiliser Sqldumper.exe pour générer un fichier de vidage pour le rapport d’erreurs Watson ou les tâches de débogage.

L’article décrit également deux autres méthodes pour générer des fichiers de vidage :

  • Le script PowerShell joint automatise SQLDumper.exe options de ligne de commande.
  • La commande DBCC STACKDUMP Transact-SQL (T-SQL) peut être utilisée pour générer un fichier de vidage dans SQL Server.

Comment exécuter Sqldumper.exe manuellement

Exécutez l’outil Sqldumper.exe dans le contexte du dossier où SQL Server l’avez installé à l’origine.

Par défaut, le chemin d’installation de Sqldumper.exe est <SQLServerInstall Drive> :\Program Files\Microsoft SQL Server\90\Shared\SQLDumper.exe. Notez que <le lecteur> SQLServerInstall est un espace réservé pour le lecteur sur lequel vous avez installé SQL Server.

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

  1. Ouvrez <SQLServerInstall Drive> :\Program Files\Microsoft SQL Server\<number>\Shared folder.

    Dans ce chemin d’accès au dossier, <number> est un espace réservé pour l’un des éléments suivants :

    • 150 pour SQL Server 2019
    • 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. Vérifiez que le fichier Dbghelp.dll se trouve dans ce dossier.

  3. Sélectionnez Démarrer>l’exécution, tapez cmd, puis sélectionnez OK.

  4. À l’invite de commandes, tapez la commande suivante, puis appuyez sur Entrée :

    cd <SQLServerInstall Drive>:\Program Files\Microsoft SQL Server\<number>\Shared
    

    Remarque

    Dans ce chemin d’accès au dossier, <le nombre> est le même espace réservé que celui qui change avec la version SQL Server, comme décrit précédemment.

  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
      
    • Fichier de mini-vidage :

      Sqldumper.exe <ProcessID> 0 0x0120
      
    • Fichier de mini-vidage qui inclut de la mémoire référencée indirectement (il s’agit de l’option recommandée et également utilisée par SQL Server par défaut lorsqu’il génère automatiquement des fichiers de vidage de la mémoire) :

      Sqldumper.exe <ProcessID> 0 0x0128
      
    • Fichier de vidage filtré :

      Sqldumper.exe <ProcessID> 0 0x8100
      

    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 Sqldumper.exe s’exécute correctement, l’outil génère un fichier de vidage dans le dossier dans lequel l’outil est installé.

Le fichier de vidage généré par Sqldumper.exe a un modèle de nom de fichier qui ressemble à 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 afin d’identifier le fichier souhaité.

Comment obtenir un identificateur de processus d’application Microsoft Windows

Pour générer un fichier de vidage à l’aide de l’outil 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. Voici comment obtenir l’identificateur de processus :

  1. Appuyez sur Ctrl+Alt+Suppr, puis sélectionnez Gestionnaire des tâches.
  2. Dans la boîte de dialogue Gestionnaire des tâches Windows , sélectionnez l’onglet Processus .
  3. Dans le menu Affichage , sélectionnez Sélectionner des colonnes.
  4. Dans la boîte de dialogue Sélectionner des colonnes , cochez la case PID (Identificateur de processus), puis sélectionnez 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 processusSqlservr.exe.
  6. Fermez le Gestionnaire des tâches.

Vous pouvez également utiliser le fichier journal des erreurs SQL Server pour obtenir l’identificateur de processus de l’application SQL Server qui s’exécute sur votre ordinateur. Une partie du fichier journal des erreurs SQL Server ressemble à l’exemple suivant :

2021-09-15 11:50:32.690 Server       Microsoft SQL Server 2019 (RTM-CU12) (KB5004524) - 15.0.4153.1 (X64)
    Jul 19 2021 15:37:34
    Copyright (C) 2019 Microsoft Corporation
    Enterprise Edition (64-bit) on Windows 10 Pro 10.0 <X64> (Build 19043: ) (Hypervisor)
2021-09-15 11:50:32.690 Server       UTC adjustment: -5:00
2021-09-15 11:50:32.690 Server       (c) Microsoft Corporation.
2021-09-15 11:50:32.690 Server       All rights reserved.
2021-09-15 11:50:32.690 Server       Server process ID is 7028.

Le numéro qui apparaît après Server process ID est l’identificateur de processus pour le processus Sqlservr.exe .

Chemin de sortie pour les fichiers de vidage mémoire

SQLDumper.exe existe principalement pour générer des fichiers de vidage mémoire pour le processus SQL Server dans les scénarios dans lesquels un vidage mémoire est nécessaire pour résoudre des problèmes spécifiques (tels que les exceptions, les assertions, les planificateurs sans rendement). Dans ce cas, SQL Server appelle le SQLDumper.exe pour générer un fichier de vidage mémoire de son processus. Par défaut, le fichier de vidage mémoire est stocké dans le répertoire SQL instance MSSQL\LOG\.

Comment modifier le chemin d’accès par défaut

Si, par exemple, la taille du fichier de vidage est trop grande, vous pouvez modifier le chemin en procédant comme suit :

  1. Ouvrez Gestionnaire de configuration SQL Server.
  2. Sous SQL Server Services, localisez le SQL Server instance qui fait l’objet d’une enquête.
  3. Cliquez avec le bouton droit sur cette entrée, sélectionnez Propriétés, puis accédez à l’onglet Avancé .
  4. Remplacez ce répertoire de vidage par le chemin d’accès souhaité, puis sélectionnez OK.
  5. Redémarrez SQL Server (si possible) pour que le nouveau paramètre prenne effet.

Lorsque l’outil 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 que suffisamment d’espace disque est disponible sur le lecteur sur lequel Sqldumper.exe écrit le fichier de vidage.

Spécifier un dossier de sortie personnalisé dans la commande

Vous pouvez spécifier le répertoire dans lequel vous souhaitez que l’outil Sqldumper.exe écrive le fichier de vidage. Le répertoire doit déjà exister avant d’exécuter Sqldumper.exe. Sinon, Sqldumper.exe échoue. N’utilisez pas de chemin UNC comme emplacement pour le fichier de vidage. Voici un exemple montrant comment spécifier l’emplacement du fichier de vidage du fichier de mini-vidage :

  1. Sélectionnez Démarrer>l’exécution, tapez cmd, puis sélectionnez OK.

  2. À l’invite de commandes, tapez la commande suivante, puis appuyez sur Entrée :

    cd <SQLServerInstall Drive>:\Program Files\Microsoft SQL Server\<number>\Shared
    
  3. À l’invite de commandes, tapez la commande suivante, puis appuyez sur Entrée :

    Sqldumper.exe ProcessID 0 0x0128 0 <MdumpPath>
    

    Remarque

    <MdumpPath> est un espace réservé pour le répertoire dans lequel vous souhaitez que l’outil Sqldumper.exe écrive le fichier de vidage. Par défaut, le fichier est écrit dans le dossier actif.

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

  • Quantité de mémoire que Sqlservr.exe utilise actuellement.
  • Vitesse du lecteur sur lequel l’outil écrit le fichier de vidage.

Pendant ce temps, l’outil Sqldumper.exe ne traite pas les commandes. Vous remarquerez que le serveur a cessé de répondre. En outre, un basculement de cluster peut se produire.

Conditions requises pour les autorisations

Pour exécuter Sqldumper.exe, vous devez vous connecter à Windows à l’aide de l’une des méthodes suivantes :

  • Utilisez un compte membre du groupe de l’administrateur sur l’ordinateur.
  • Utilisez le même compte d’utilisateur que celui sous lequel s’exécute le service SQL Server.

Pour que l’outil 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, sélectionnez Démarrer>l’exécution, tapez mstsc /console, puis sélectionnez OK. Si le serveur cible exécute Windows 2000, l’option /console est ignorée en mode silencieux. Vous pouvez vous connecter au serveur via le Bureau à distance, 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 actif après l’exécution de Sqldumper.exe, passez en revue les informations que l’outil 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 actif. Voici deux messages d’erreur possibles et leurs causes :

Message Cause
« Échec d’OpenProcess 0x57 - Le paramètre est incorrect » Un ID de processus non valide a été passé à l’utilitaire Sqldumper.exe.
« Valeur non valide pour l’ID de thread - <Erreur de paramètre> non valide » Un paramètre non valide a été passé à l’utilitaire Sqldumper.exe.

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

  • « Type de rappel inconnu pendant minidump 6 »
  • « Type de rappel inconnu pendant minidump 7 »

Impact de la génération de vidage

Lorsqu’un fichier de vidage d’un processus en mode utilisateur est demandé (comme décrit dans cet article, par opposition aux vidages du noyau du système d’exploitation, qui sont en dehors de notre portée), le processus cible (ici SQLServer.exe) est figé pendant la durée nécessaire pour sérialiser le contenu de vidage sur sa cible de fichier.

Figé signifie que le processus ne sera pas en mesure d’exécuter une demande de l’utilisateur ou une opération interne, y compris un mécanisme d’interrogation des ressources, tel que l’implémentation de IsAlive et de Looks Alive de Windows Clustering (voir la section Vidages mémoire sur les basculements de cluster pour plus d’informations sur la gestion de cette situation). Tout délai d’attente qui repose sur l’heure de l’horloge murale peut également être violé en raison du gel.

Comme cela peut être dérivé de l’instruction précédente, la durée du gel est donc le facteur critique ici, et il est déterminé par les éléments suivants :

  • Type de vidage sélectionné.
  • La taille de SQL Server processus en mémoire, qui, dans le cas d’un seul instance actif exécutant des paramètres par défaut, est souvent proche de la ram physique totale du serveur.
  • 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 des types de vidage volumineux autres que ceux par défaut sont sélectionnés. Veillez à passer en revue les types de vidage pour savoir à quoi vous attendre. Par défaut, certaines méthodes de vidage créent le vidage dans SQL Server dossier \Log de l’instance, qui, dans la configuration simple par défaut, serait également disque système et disque de données +journal pour SQL Server. La saturation de ce disque aura un impact grave sur SQL Server et/ou la disponibilité du système.

Gérer l’impact sur les systèmes en cluster

Le processus est temporairement suspendu pendant la génération de vidage. Cela peut affecter la disponibilité du service SQL Server et déclencher le basculement des ressources dans Always On contextes (instance de cluster de basculement et groupe de disponibilité). La génération de vidage de différents processus a un impact différent sur les ressources. Lisez attentivement les sections Impact of dump generation (Impact of dump generation) et Dump types (Types de vidage).

Lors de la capture d’un vidage de SQL Server sur un instance cluster de basculement ou un instance de groupe de disponibilité de SQL Server, le SQL Server ou le groupe de disponibilité en cluster peut basculer vers un autre nœud si le vidage prend trop de temps. Cela peut être particulièrement problématique sur les systèmes qui utilisent de très grandes quantités de RAM ou si vous générez une image mémoire filtrée ou complète. Pour empêcher le basculement, utilisez les paramètres suivants avant de capturer le fichier de vidage. La modification peut être annulée après la prise d’un fichier de vidage :

  • Pour les instance cluster de basculement (FCI) :
    • Cliquez avec le bouton droit sur SQL Server ressource dans Administrateur de cluster, sélectionnez Si la ressource échoue, ne redémarrez pas sous l’onglet Stratégies.
    • Sous l’onglet Propriétés , augmentez le délai d’expiration de HealthCheck. Par exemple, définissez la valeur de la propriété sur 180 secondes ou plus. Si ce délai d’expiration est atteint, la stratégie Si la ressource échoue, ne redémarrez pas sera ignorée et la ressource sera redémarrée de toute façon.
    • Sous l’onglet Propriétés , remplacez la valeur FailureConditionLevel par zéro.
  • Pour le groupe de disponibilité, appliquez tous les paramètres suivants :
    • Augmentez le délai d’expiration de session, par exemple 120 secondes pour tous les réplicas. Dans SQL Server Management Studio (SSMS), cliquez avec le bouton droit sur le réplica à configurer, puis sélectionnez Propriétés. Définissez le champ Délai d’expiration de la session (secondes) sur 120 secondes. Pour plus d’informations, consultez Modifier la période de Session-Timeout pour un réplica de disponibilité (SQL Server).
    • Remplacez le basculement automatique de tous les réplicas par le basculement manuel. Dans SSMS, cliquez avec le bouton droit sur réplica, sélectionnez Propriétés et remplacez le basculement automatique de tous les réplicas par un 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 leaseTimeout à 60 000 ms (60 secondes) et remplacez HealthCheckTimeout par 90 000 ms (90 secondes). Dans Administrateur de cluster, cliquez avec le bouton droit sur ressource du groupe de disponibilité, sélectionnez Propriétés, puis basculez vers l’onglet Propriétés pour modifier les deux paramètres. Pour plus d’informations, consultez Configurer les paramètres de propriété HealthCheckTimeout.

Améliorations apportées aux produits pour réduire l’impact sur les SQL Server

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

Mécanisme de filtrage de bitmap

SQL Server alloue une bitmap qui effectue le suivi des pages mémoire à exclure d’un vidage filtré. Sqldumper.exe lit la bitmap et filtre les pages sans avoir à lire d’autres métadonnées du gestionnaire de mémoire. Les messages suivants s’affichent dans le journal des erreurs SQL Server lorsque la bitmap est activée ou désactivée respectivement :

Page exclusion bitmap is enabled. et Page exclusion bitmap is disabled.

  • SQL Server 2016

    À compter de SQL Server 2016 SP2 CU13, le filtrage bitmap est activé par défaut.

  • SQL Server 2017

    • Cela n’est pas disponible dans RTM à CU15.
    • Dans SQL Server 2017 CU16, vous pouvez activer le filtrage bitmap via T8089 et le désactiver en désactivant T8089.
    • À compter de SQL Server 2017 CU20, le filtrage bitmap est activé par défaut. L’indicateur de trace T8089 ne s’applique plus et est ignoré s’il est activé. Le filtrage bitmap peut être désactivé via T8095.
  • SQL Server 2019

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

Élimination des vidages répétés sur le même problème

Les images mémoire répétées sur le même problème sont éliminées. À l’aide d’une signature de pile, le moteur SQL effectue le suivi si une exception s’est déjà produite et ne produit pas de nouvelle image mémoire s’il en existe déjà une. Cela s’applique aux violations d’accès, au dépassement de capacité de la 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 fige pas temporairement le processus 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 seul vidage de mémoire peut non seulement être écrasant, mais il peut également ralentir le processus de génération d’un vidage mémoire en raison du temps nécessaire à la sérialisation de toutes ces informations dans un format texte 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 :

DateTimespidS pid    **Dump thread - spid = 0, EC = 0x0000015C7169BF40
DateTimespidS pid    *
DateTimespidS pid    *User initiated stack dump. This is not a server exception dump.
DateTimespidS pid    *
DateTimespidS pid    Stack Signature for the dump is 0x00000000788399E5
DateTimespidS pid    External dump process return code 0x20000001.
External dump process returned no errors.

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

Compression parallèle des images mémoire

Pour générer des vidages plus rapidement et réduire leur taille, une fonctionnalité de vidage de mémoire compressée a été introduite dans SQL Server 2022 CU8 et SQL Server 2019 CU23. Lorsqu’elle est activée, Sqldumper.exe crée plusieurs threads pour lire simultanément la mémoire d’un processus, la compresse, puis l’enregistre dans le fichier de vidage. Cette compression parallèle multithread réduit la taille du fichier et accélère le processus de vidage lorsqu’elle est utilisée avec des vidages complets et filtrés.

Vous pouvez activer l’indicateur de trace 2610 pour activer le vidage de la mémoire compressée :

DBCC TRACEON (2610,-1)
GO
DBCC STACKDUMP with FILTERED_DUMP
GO
DBCC TRACEOFF (2610,-1)

Vous pouvez également ajouter -T2610 en tant que paramètre de démarrage à votre SQL Server instance afin qu’il crée toujours des vidages mémoire compressés.

Si vous exécutez manuellement Sqldumper.exe, vous pouvez utiliser le -zdmp paramètre pour capturer une image mémoire compressée. Par exemple :

Sqldumper.exe <ProcessID> 0 0x8100 0 d:\temp -zdmp

Vous pouvez également limiter le nombre de cœurs que Sqldumper.exe pouvez utiliser pour créer le vidage compressé à l’aide du -cpu:X paramètre , où X est le nombre de processeurs. Ce paramètre n’est disponible que lorsque vous exécutez manuellement Sqldumper.exe à partir de la ligne de commande :

Sqldumper.exe <ProcessID> 0 0x8100 0 d:\temp -zdmp -cpu:8

Facteurs qui empêchent ou retardent la création de vidages mémoire

Les facteurs suivants sont connus pour provoquer des retards ou empêcher la création de vidages de mémoire.

  • Le chemin d’E/S dans lequel les vidages mémoire sont écrits fonctionne mal. Dans ce cas, l’étape logique suivante consiste à examiner et à résoudre les performances d’E/S disque.
  • Un antivirus ou un autre logiciel de surveillance interfère avec SQLDumper.exe. Dans certains cas, un logiciel tiers détoure la fonction ReadProcessMemory . Cela peut augmenter considérablement la durée du vidage. Pour résoudre la plupart de ces problèmes, désactivez le logiciel d’interférence ou ajoutez SQLDumper.exe à une liste d’exclusion.

Types de vidage

Les méthodes suivantes peuvent être utilisées pour générer trois types de vidages différents : les mini-vidages, lesvidages complets et les vidages filtrés.

Mini-vidages avec mémoire référencée

Ce type de vidage mémoire est 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 de processus clés ou de thread. Ils ont généralement une taille de quelques mégaoctets et sont rapides à générer (de moins d’une seconde à quelques secondes). Même les systèmes serveurs plus volumineux (avec des centaines de processeurs entraînant indirectement un grand nombre de threads dans SQL Server processus) dépassent rarement 20 à 30 Mo : la taille d’un mini-vidage n’augmente pas avec la taille de SQL Server processus. 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 verrous, l’altération de la base de données, les assertions.

Remarque

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.

Vidages complets

Une image mémoire complète est une copie complète de l’espace de traitement cible actif. Cela inclut donc l’état de tous les threads, la mémoire allouée au processus et tous les modules chargés. Les vidages complets auront donc une taille, qui est à peu près la même que SQL Server processus, qui à son tour peut être presque aussi grand que la RAM système totale. Sur les serveurs volumineux dédiés à un seul SQL Server instance, cela peut signifier un fichier de plusieurs centaines de gigaoctets ou plus. Inutile de dire qu’un tel fichier prendra beaucoup de temps à générer et provoquera donc un gel prolongé. Les performances du disque pour le fichier cible du vidage influencent considérablement le temps de gel. Ce type de vidage est rarement utilisé pour SQL Server de nos jours, comme décrit dans l’explication suivante.

Vidages filtrés

À mesure que la taille de la RAM des serveurs standard exécutant SQL Server augmente régulièrement, les vidages complets deviennent plus difficiles à gérer. Les vidages filtrés sont donc implémentés. Un vidage filtré est un sous-ensemble d’un vidage complet, où de grandes zones de mémoire SQL Server sont exclues à la volée et non écrites sur le disque. En règle générale, la mémoire exclue n’apporte aucune valeur ajoutée à la résolution des problèmes. Par exemple, les pages de données/index et certains caches internes tels que les pages de données Hekaton et la mémoire du pool de journaux. Ce vidage filtré génère un fichier plus petit qu’un vidage complet, mais le vidage conserve presque toute son utilité. Les vidages filtrés ont remplacé les vidages complets comme option préférée dans la grande majorité des situations où les mini-vidages ne sont pas suffisants. La diminution de la taille peut varier par rapport à un vidage complet, mais il s’agit toujours d’un fichier assez volumineux, qui représente souvent 30 à 60 % de SQL Server taille de processus. Par conséquent, il est préférable de planifier une taille possible aussi grande qu’un vidage complet comme pire option, ce qui laisse une bonne marge de sécurité. Un vidage filtré n’est pas 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 nécessaire à l’implémentation de la logique de filtre (la vitesse du disque et la vitesse processeur/RAM influenceront cela).

Vous pouvez utiliser la requête suivante pour obtenir une estimation approximative de la taille du vidage filtré. Bien que la plupart des pages de données ou d’index soient exclues du vidage, celles qui sont exclusivement bloquées et en cours de modification ne seront pas omises.

SELECT SUM(pages_kb)
FROM sys.dm_os_memory_clerks
WHERE type != 'MEMORYCLERK_SQLBUFFERPOOL'

Étant donné que vous pouvez utiliser Sqldumper.exe pour générer un fichier de vidage à la demande pour n’importe quelle application Microsoft Windows, vous pouvez envisager d’utiliser l’option de vidage filtré. Toutefois, un fichier de vidage filtré n’est applicable et significatif que dans le contexte de SQL Server. Vous pouvez toujours générer un mini-vidage, un fichier de vidage complet ou des applications non SQL Server correctement.

Le processus SQL Server appelle l’outil Sqldumper.exe en interne pour générer un fichier de vidage lorsque le processus rencontre des exceptions. SQL Server transmet les paramètres à Sqldumper.exe. Vous pouvez utiliser des indicateurs de trace pour modifier les paramètres que SQL Server passe à l’outil par défaut lorsqu’une exception ou une assertion se produit. Ces indicateurs de trace sont comprises entre 2540 et 2559. Vous pouvez utiliser l’un de ces indicateurs de trace pour modifier le type de vidage par défaut SQLDumper.exe générer (la valeur par défaut est un mini-vidage avec mémoire référencée). Par exemple :

  • Indicateur de trace 2551 : produit une image mémoire filtrée.
  • Indicateur de trace 2544 : produit une image mémoire complète.
  • Indicateur de trace 8026 : SQL Server efface un déclencheur de vidage après avoir généré le vidage une fois.

Si plusieurs indicateurs de trace sont actifs, l’option indiquant le plus grand vidage de mémoire est respectée. Par exemple, si les indicateurs de trace 2551 et 2544 sont utilisés, SQL Server crée une image mémoire complète.

Générer une image mémoire sur les basculements de cluster

Dans les scénarios de basculement de cluster, la DLL de ressource SQL Server peut obtenir un fichier de vidage avant le basculement pour faciliter la résolution des problèmes. 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’outil Sqldumper.exe génère correctement le fichier de vidage, vous devez définir les trois propriétés suivantes comme prérequis :

  • SqlDumperDumpTimeOut

    Délai d’attente spécifié par l’utilisateur. La DLL de ressource attend que le fichier de vidage soit terminé avant que la DLL de ressource arrête le service SQL Server.

  • SqlDumperDumpPath

    Emplacement où l’outil Sqldumper.exe génère le fichier de vidage.

  • SqlDumperDumpFlags

    Indicateurs que Sqldumper.exe utilise.

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

Configuration de cluster pour SQLDumper sur SQL Server 2012 et versions ultérieures

Vous pouvez utiliser la ALTER SERVER CONFIGURATION commande (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 SqlDumperDumpFlags = 296;

Vous pouvez également utiliser des scripts PowerShell. Par exemple, pour un instance SQL2017AG nommé :

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 vérifier que les paramètres ont été appliqués, vous pouvez exécuter cette commande PowerShell :

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

Configuration de cluster pour SQLDumper sur SQL Server 2008/2008 R2 ou Windows 2012 et versions antérieures

Pour définir les propriétés de l’utilitaire Sqldumper.exe pour le basculement de cluster à l’aide de la commande de ressource de cluster , procédez comme suit :

  1. Sélectionnez Démarrer>l’exécution, tapez cmd, puis sélectionnez OK.
  2. Pour chaque propriété, tapez la commande correspondante à l’invite de commandes, puis appuyez sur Entrée :
    • la propriété SqlDumperDumpFlags

      Pour définir la SqlDumperDumpFlags propriété pour 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 de tous les threads

        • Instance par défaut

          cluster resource "SQL Server" /priv SqlDumperDumpFlags = 0x01100
          
        • Instance nommée

          cluster resource "SQL Server (INSTANCE1)" /priv SqlDumperDumpFlags = 0x01100
          
      • Fichier de mini-vidage de tous les threads

        • Instance par défaut

          cluster resource "SQL Server" /priv SqlDumperDumpFlags = 0x0120
          
        • Instance nommée

          cluster resource "SQL Server (INSTANCE1)" /priv SqlDumperDumpFlags = 0x0120
          
      • Tous les fichiers de vidage de thread filtrés

        • Instance par défaut

          cluster resource "SQL Server" /priv SqlDumperDumpFlags = 0x8100
          
        • Instance nommée

          cluster resource "SQL Server  (INSTANCE1)" /priv SqlDumperDumpFlags = 0x8100
          
    • la propriété SqlDumperDumpPath

      cluster resource "SQL Server" /priv SqlDumperDumpPath = <DirectoryPath>
      

      Remarque

      <DirectoryPath> est un espace réservé pour le répertoire dans lequel le fichier de vidage sera généré, et il doit être spécifié entre guillemets ( » « ).

    • la propriété SqlDumperDumpTimeOut

      cluster resource "SQL Server" /priv SqlDumperDumpTimeOut = <Timeout>
      

      Remarque

      <Le délai d’expiration> est un espace réservé pour le délai d’expiration en millisecondes (ms).

Le temps nécessaire à l’outil pour générer un fichier de vidage d’un processus SQL Server dépend de la configuration de l’ordinateur. Pour un ordinateur qui a beaucoup de souvenirs, le temps pourrait être important. Pour obtenir une estimation du temps nécessaire au processus, utilisez l’outil Sqldumper.exe pour générer manuellement un fichier de vidage. Les valeurs valides pour la SqlDumperDumpTimeOut propriété sont comprises entre 10 000 ms et MAXDWORD. MAXDWORD représente la valeur la plus élevée dans la plage du type de données DWORD (4294967295).

Pour vérifier que les paramètres ont été activés, vous pouvez exécuter la commande suivante :

cluster resource "SQL Server" /priv

Supprimer les propriétés Sqldumper.exe pour le basculement de cluster

Pour supprimer les propriétés de l’outil Sqldumper.exe pour le basculement de cluster, procédez comme suit :

  1. Sélectionnez Démarrer>l’exécution, tapez cmd, puis sélectionnez OK.
  2. Pour une propriété spécifique, tapez la commande correspondante à l’invite de commandes, puis appuyez sur Entrée :
    • la propriété SqlDumperDumpFlags

      • Instance par défaut

          cluster resource "SQL Server" /priv:SqlDumperDumpFlags /usedefault
        
      • Instance nommée

          cluster resource "SQL Server (INSTANCE1)" /priv:SqlDumperDumpFlags /usedefault
        
    • la propriété SqlDumperDumpPath

      • Instance par défaut

        cluster resource "SQL Server" /priv:SqlDumperDumpPath /usedefault
        
      • Instance nommée

        cluster resource "SQL Server (INSTANCE1)" /priv:SqlDumperDumpPath /usedefault
        
    • la propriété SqlDumperDumpTimeOut

      • Instance par défaut

        cluster resource "SQL Server" /priv:SqlDumperDumpTimeOut /usedefault
        
      • Instance nommée

        cluster resource "SQL Server (INSTANCE1)" /priv:SqlDumperDumpTimeOut /usedefault
        

Comment utiliser DBCC STACKDUMP

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

DBCC STACKDUMP

Pour connaître les fonctionnalités étendues de DBCC STACKDUMP dans SQL Server 2019, consultez Fonctionnalités DBCC STACKDUMP étendues introduites dans SQL Server 2019.

Pour permettre à cette méthode de créer un vidage filtré, activez les indicateurs de trace 2551 à l’aide de la commande suivante :

DBCC TRACEON(2551, -1)
GO
DBCC STACKDUMP

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

Une fois le fichier de vidage obtenu, vous devez désactiver l’indicateur de trace à l’aide de la commande DBCC TRACEOFF (<TraceNumber>, -1); pour éviter de mettre à niveau par inadvertance tous les minidumps SQL Server auto-diagnostic vers des vidages plus volumineux. Dans la commande, <TraceNumber> est l’indicateur de trace que vous avez précédemment activé, comme 2551 ou 2544. Par exemple :

DBCC TRACEOFF(2551, -1)

Si vous ne savez pas quel indicateur de trace reste actif, exécutez la commande suivante :

DBCC TRACESTATUS(-1)

Un jeu de résultats vide indique qu’aucun indicateur de trace n’est actif. À l’inverse, si 2551 est toujours actif, vous verrez :

TraceFlag État Global Session
2551 1 1 0

Remarque

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

Fonctionnalité DBCC STACKDUMP étendue introduite dans SQL Server 2019

À compter de SQL Server 2019 CU2, la commande a été étendue pour prendre en charge la DBCC STACKDUMP génération de vidages de différents types : vidages mini, filtrés et complets. Cette commande élimine la nécessité d’utiliser des indicateurs de trace. Il vous permet également de limiter la sortie de texte dans l’autre fichier texte généré avec le vidage mémoire. Cela peut fournir un gain de performances visible dans le temps nécessaire SQLDumper.exe pour générer une image mémoire.

DBCC STACKDUMP WITH MINI_DUMP | FILTERED_DUMP | FULL_DUMP [, TEXT_DUMP = LIMITED | DETAILED]

est TEXT_DUMP = LIMITED l’option par défaut. Si vous souhaitez recevoir une sortie détaillée dans le fichier SQLDump000X.txt , vous pouvez utiliser TEXT_DUMP = DETAILED.

Pour générer un vidage filtré avec une sortie limitée dans le fichier .txt , exécutez la commande suivante :

DBCC STACKDUMP WITH FILTERED_DUMP , TEXT_DUMP = LIMITED

Comment utiliser un script PowerShell pour générer un fichier de vidage avec SQLDumper

  • Enregistrez le code suivant dans un fichier PS1, par exemple SQLDumpHelper.ps1:

    Détails du code

    $isInt = $false
    $isIntValDcnt = $false
    $isIntValDelay = $false
    $SqlPidInt = 0
    $NumFoler = ""
    $OneThruFour = ""
    $SqlDumpTypeSelection = ""
    $SSASDumpTypeSelection = ""
    $SSISDumpTypeSelection = ""
    $SQLNumfolder = 0
    $SQLDumperDir = ""
    $OutputFolder = ""
    $DumpType = "0x0120"
    $ValidPid
    $SharedFolderFound = $false
    $YesNo = ""
    $ProductNumber = ""
    $ProductStr = ""
    
    Write-Host ""
    Write-Host "`******************************************************************"
    Write-Host "This script helps you generate one or more SQL Server memory dumps"
    Write-Host "It presents you with choices on:`
                -target SQL Server process (if more than one)
                -type of memory dump
                -count and time interval (if multiple memory dumps)
    You can interrupt this script using CTRL+C"
    Write-Host "***********************************************************************"
    
    # check for administrator rights
    # debugging tools like SQLDumper.exe require Admin privileges to generate a memory dump
    
    if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))
    {
        Write-Warning "Administrator rights are required to generate a memory dump!`nPlease re-run this script as an Administrator!"
        return
    }
    
    # what product would you like to generate a memory dump
    while ($true)
    {
        Write-Host "Which product would you like to generate a memory dump of?" -ForegroundColor Yellow
        Write-Host "1) SQL Server"
        Write-Host "2) SSAS (Analysis Services)"
        Write-Host "3) SSIS (Integration Services)"
        Write-Host "4) SSRS (Reporting Services)"
        Write-Host "5) SQL Server Agent"
        Write-Host ""
        $ProductNumber = Read-Host "Enter 1-5>"
    
        if ($ProductNumber -in 1,2,3,4,5)
        {
            break
        }
        Write-Host "`nPlease enter a valid number from list above!`n"
        Start-Sleep -Milliseconds 300
    }
    
    if ($ProductNumber -eq "1")
    {
        $SqlTaskList = Tasklist /SVC /FI "imagename eq sqlservr*" /FO CSV | ConvertFrom-Csv
        $ProductStr = "SQL Server"
    }
    elseif ($ProductNumber -eq "2")
    {
        $SqlTaskList = Tasklist /SVC /FI "imagename eq msmdsrv*" /FO CSV | ConvertFrom-Csv
        $ProductStr = "SSAS (Analysis Services)"
    }
    elseif ($ProductNumber -eq "3")
    {
        $SqlTaskList = Tasklist /SVC /FI "imagename eq msdtssrvr*" /FO CSV | ConvertFrom-Csv
        $ProductStr = "SSIS (Integration Services)"
    }
    elseif ($ProductNumber -eq "4")
    {
        $SqlTaskList = Tasklist /SVC /FI "imagename eq reportingservicesservice*" /FO CSV | ConvertFrom-Csv
        $ProductStr = "SSRS (Reporting Services)"
    }
    elseif ($ProductNumber -eq "5")
    {
        $SqlTaskList = Tasklist /SVC /FI "imagename eq sqlagent*" /FO CSV | ConvertFrom-Csv
        $ProductStr = "SQL Server Agent"
    }
    
    if ($SqlTaskList.Count -eq 0)
    {
        Write-Host "There are currently no running instances of $ProductStr. Exiting..." -ForegroundColor Green
        break
    }
    
    # if multiple SQL Server instances, get the user to input PID for desired SQL Server
    if ($SqlTaskList.Count -gt 1)
    {
        Write-Host "More than one $ProductStr instance found."
    
        $SqlTaskList | Select-Object PID, "Image name", Services | Out-Host
    
        # check input and make sure it is a valid integer
        while ($true)
        {
            Write-Host "Please enter the PID for the desired SQL service from list above" -ForegroundColor Yellow
            $SqlPidStr = Read-Host ">"
    
            if( $SqlPidStr -in $SqlTaskList.PID)
            {
                $SqlPidInt = [int]$SqlPidStr
                break
            }
        }
    
        Write-Host "Using PID=$SqlPidInt for generating a $ProductStr memory dump" -ForegroundColor Green
        Write-Host ""
    
    }
    else # if only one SQL Server/SSAS on the box, go here
    {
        $SqlTaskList | Select-Object PID, "Image name", Services | Out-Host
        $SqlPidInt = [convert]::ToInt32($SqlTaskList.PID)
    
        Write-Host "Using PID=", $SqlPidInt, " for generating a $ProductStr memory dump" -ForegroundColor Green
        Write-Host ""
    }
    
    # dump type
    
    if ($ProductNumber -eq "1")  # SQL Server memory dump
    {
        # ask what type of SQL Server memory dump
        while($true)
        {
            Write-Host "Which type of memory dump would you like to generate?" -ForegroundColor Yellow
            Write-Host "1) Mini-dump"
            Write-Host "2) Mini-dump with referenced memory " -NoNewLine; Write-Host "(Recommended)"
            Write-Host "3) Filtered dump " -NoNewline; Write-Host "(Not Recommended)" -ForegroundColor Red
            Write-Host "4) Full dump  " -NoNewline; Write-Host "(Do Not Use on Production systems!)" -ForegroundColor Red
            Write-Host ""
            $SqlDumpTypeSelection = Read-Host "Enter 1-4>"
    
            if ($SqlDumpTypeSelection -in 1,2,3,4)
            {
                break
            }
            Write-Host "`nPlease enter a valid type of memory dump!`n"
            Start-Sleep -Milliseconds 300
        }
    
        Write-Host ""
    
        switch ($SqlDumpTypeSelection)
        {
            "1" { $DumpType="0x0120"; break }
            "2" { $DumpType="0x0128"; break }
            "3" { $DumpType="0x8100"; break }
            "4" { $DumpType="0x01100"; break }
            default { "0x0120"; break }
        }
    }
    elseif ($ProductNumber -eq "2")  # SSAS dump
    {
        # ask what type of SSAS memory dump
        while($true)
        {
            Write-Host "Which type of memory dump would you like to generate?" -ForegroundColor Yellow
            Write-Host "1) Mini-dump"
            Write-Host "2) Full dump  " -NoNewline; Write-Host "(Do Not Use on Production systems!)" -ForegroundColor Red
            Write-Host ""
            $SSASDumpTypeSelection = Read-Host "Enter 1-2>"
    
            if ($SSASDumpTypeSelection -in 1,2)
            {
                break
            }
            Write-Host "`nPlease enter a valid type of memory dump!`n"
            Start-Sleep -Milliseconds 300
        }
    
        Write-Host ""
    
        switch ($SSASDumpTypeSelection)
        {
            "1" {$DumpType="0x0";break}
            "2" {$DumpType="0x34";break}
            default {"0x0120"; break}
        }
    }
    elseif ($ProductNumber -in 3,4,5)  # SSIS/SSRS/SQL Agent dump
    {
        # ask what type of SSIS memory dump
        while($true)
        {
            Write-Host "Which type of memory dump would you like to generate?" -ForegroundColor Yellow
            Write-Host "1) Mini-dump"
            Write-Host "2) Full dump"
            Write-Host ""
            $SSISDumpTypeSelection = Read-Host "Enter 1-2>"
    
            if ($SSISDumpTypeSelection -in 1,2)
            {
                break
            }
            Write-Host "`nPlease enter a valid type of memory dump!`n"
            Start-Sleep -Milliseconds 300
        }
    
        Write-Host ""
    
        switch ($SSISDumpTypeSelection)
        {
            "1" { $DumpType="0x0"; break }
            "2" { $DumpType="0x34"; break }
            default { "0x0120"; break }
        }
    }
    
    # Sqldumper.exe PID 0 0x0128 0 c:\temp
    # output folder
    while($OutputFolder -eq "" -or !(Test-Path -Path $OutputFolder))
    {
        Write-Host ""
        Write-Host "Where would your like the memory dump stored (output folder)?" -ForegroundColor Yellow
        $OutputFolder = Read-Host "Enter an output folder with no quotes (e.g. C:\MyTempFolder or C:\My Folder)"
        if ($OutputFolder -eq "" -or !(Test-Path -Path $OutputFolder))
        {
            Write-Host "'" $OutputFolder "' is not a valid folder. Please, enter a valid folder location" -ForegroundColor Yellow
        }
    }
    
    # strip the last character of the Output folder if it is a backslash "\". Else Sqldumper.exe will fail
    if ($OutputFolder.Substring($OutputFolder.Length-1) -eq "\")
    {
        $OutputFolder = $OutputFolder.Substring(0, $OutputFolder.Length-1)
        Write-Host "Stripped the last '\' from output folder name. Now folder name is  $OutputFolder"
    }
    
    # find the highest version of SQLDumper.exe on the machine
    $NumFolder = dir "C:\Program Files\Microsoft SQL Server\1*" | Select-Object @{name = "DirNameInt"; expression={[int]($_.Name)}}, Name, Mode | Where-Object Mode -Match "da*" | Sort-Object DirNameInt -Descending
    
    for( $j=0; $j -lt $NumFolder.Count; $j++)
    {
        $SQLNumfolder = $NumFolder.DirNameInt[$j]   # start with the highest value from sorted folder names - latest version of dumper
        $SQLDumperDir = "C:\Program Files\Microsoft SQL Server\" + $SQLNumfolder.ToString() + "\Shared\"
        $TestPathDumperDir = $SQLDumperDir + "sqldumper.exe"
    
        if (Test-Path -Path $SQLDumperDir)
        {
            break
        }
    }
    
    # build the SQLDumper.exe command e.g. (Sqldumper.exe 1096 0 0x0128 0 c:\temp\)
    
    $cmd = "$([char]34)"+$SQLDumperDir + "sqldumper.exe$([char]34)"
    $arglist = $SqlPidInt.ToString() + " 0 " +$DumpType +" 0 $([char]34)" + $OutputFolder + "$([char]34)"
    Write-Host "Command for dump generation: ", $cmd, $arglist -ForegroundColor Green
    
    # do-we-want-multiple-dumps section
    Write-Host ""
    Write-Host "This utility can generate multiple memory dumps, at a certain interval"
    Write-Host "Would you like to collect multiple memory dumps (2 or more)?" -ForegroundColor Yellow
    
    # validate Y/N input
    while ($true)
    {
        $YesNo = Read-Host "Enter Y or N>"
    
        if ($YesNo -in "y","n")
        {
            break
        }
        Write-Host "Not a valid 'Y' or 'N' response"
    }
    
    # get input on how many dumps and at what interval
    if ($YesNo -eq "y")
    {
        [int]$DumpCountInt=0
        while (1 -ge $DumpCountInt)
        {
            Write-Host "How many dumps would you like to generate for this $ProductStr ?" -ForegroundColor Yellow
            $DumpCountStr = Read-Host ">"
    
            if ([int]::TryParse($DumpCountStr, [ref]$DumpCountInt) -and $DumpCountInt -gt 1)
            {
                break
            }
            Write-Host "Please enter a number greater than one." -ForegroundColor Red
        }
    
        [int]$DelayIntervalInt=0
        while ($true)
        {
            Write-Host "How frequently (in seconds) would you like to generate the memory dumps?" -ForegroundColor Yellow
            $DelayIntervalStr = Read-Host ">"
    
            if ([int]::TryParse($DelayIntervalStr, [ref]$DelayIntervalInt) -and $DelayIntervalInt -gt 0)
            {
                break
            }
            Write-Host "Please enter a number greater than zero." -ForegroundColor Red
        }
    
        Write-Host "Generating $DumpCountInt memory dumps at a $DelayIntervalStr-second interval" -ForegroundColor Green
    
        # loop to generate multiple dumps
        $cntr = 0
        while ($true)
        {
            Start-Process -FilePath $cmd -Wait -Verb runAs -ArgumentList $arglist
            $cntr++
    
            Write-Host "Generated $cntr memory dump(s)." -ForegroundColor Green
    
            if ($cntr -ge $DumpCountInt)
            {
                break
            }
            Start-Sleep -S $DelayIntervalInt
        }
    
        # print what files exist in the output folder
        Write-Host ""
        Write-Host "Here are all the memory dumps in the output folder '$OutputFolder'" -ForegroundColor Green
        $MemoryDumps = $OutputFolder + "\SQLDmpr*"
        Get-ChildItem -Path $MemoryDumps
    
        Write-Host ""
        Write-Host "Process complete"
    }
    else # produce just a single dump
    {
        Start-Process -FilePath $cmd -Wait -Verb runAs -ArgumentList $arglist
    
        # print what files exist in the output folder
        Write-Host ""
        Write-Host "Here are all the memory dumps in the output folder '$OutputFolder'" -ForegroundColor Green
        $MemoryDumps = $OutputFolder + "\SQLDmpr*"
        Get-ChildItem -Path $MemoryDumps
    
        Write-Host ""
        Write-Host "Process complete"
    }
    
    Write-Host "For errors and completion status, review SQLDUMPER_ERRORLOG.log created by SQLDumper.exe in the output folder '$OutputFolder'.`nOr if SQLDumper.exe failed, look in the folder from which you are running this script."
    
  • Exécutez-la à partir de l’invite de commandes en tant qu’administrateur à l’aide de la commande suivante :

    Powershell.exe -File SQLDumpHelper.ps1
    
  • Vous pouvez également l’exécuter à partir de Windows PowerShell console et l’exécuter 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 :

« Impossible de charger le fichier ...SQLDumpHelper.ps1, car l’exécution de scripts est désactivée sur ce système. »

Pour activer la possibilité d’exécuter les commandes, procédez comme suit :

  1. Démarrez Windows PowerShell console à l’aide de 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 permet d’exécuter des scripts non signés que vous créez sur votre ordinateur local et des scripts signés à partir d’Internet.