SQLdiag (utilitaire)SQLdiag Utility

Cette rubrique s’applique à : OuiSQL Serveraucunbase de données SQL AzureaucunAzure SQL Data Warehouse aucun Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse Le SQLdiag est un utilitaire de collecte de diagnostics usage général qui peut être exécuté comme une application console ou en tant que service. The SQLdiag utility is a general purpose diagnostics collection utility that can be run as a console application or as a service. Vous pouvez utiliser SQLdiag pour collecter des fichiers journaux et des fichiers de données à partir de SQL ServerSQL Server et depuis d’autres types de serveurs, mais aussi analyser vos serveurs au fil des jours ou trouver des solutions à des problèmes spécifiques les concernant.You can use SQLdiag to collect logs and data files from SQL ServerSQL Server and other types of servers, and use it to monitor your servers over time or troubleshoot specific problems with your servers. SQLdiag a été conçu pour accélérer et simplifier la collecte d’informations de diagnostic pour les services d’assistance de MicrosoftMicrosoft .SQLdiag is intended to expedite and simplify diagnostic information gathering for MicrosoftMicrosoft Customer Support Services.

Note

Cet utilitaire peut être amené à évoluer par la suite, ainsi les applications ou les scripts élaborés à partir de son comportement ou de ses arguments de ligne de commande peuvent ne pas fonctionner correctement dans les versions ultérieures qui seront développées.This utility may be changed, and applications or scripts that rely on its command line arguments or behavior may not work correctly in future releases.

SQLdiag peut recueillir les types suivants d’informations de diagnostic :SQLdiag can collect the following types of diagnostic information:

  • Journaux de performances WindowsWindows performance logs

  • Journaux d'événements WindowsWindows event logs

  • SQL Server ProfilerSQL Server Profiler traces traces

  • SQL ServerSQL Server informations de blocage blocking information

  • SQL ServerSQL Server informations de configuration configuration information

    Vous pouvez spécifier les types d’informations que vous souhaitez collecter par SQLdiag en modifiant le fichier de configuration SQLDiag.xml, décrit dans une section suivante.You can specify what types of information you want SQLdiag to collect by editing the configuration file SQLDiag.xml, which is described in a following section.

SyntaxeSyntax


sqldiag   
     { [/?] }  
     |  
     { [/I configuration_file]  
       [/O output_folder_path]  
       [/P support_folder_path]  
       [/N output_folder_management_option]  
       [/M machine1 [ machine2 machineN]| @machinelistfile]  
       [/C file_compression_type]  
       [/B [+]start_time]  
       [/E [+]stop_time]  
       [/A SQLdiag_application_name]  
       [/T { tcp [ ,port ] | np | lpc } ]  
       [/Q] [/G] [/R] [/U] [/L] [/X] }  
     |  
     { [START | STOP | STOP_ABORT] }  
     |  
     { [START | STOP | STOP_ABORT] /A SQLdiag_application_name }  

ArgumentsArguments

/?/?
Affiche les informations d'utilisation.Displays usage information.

/I fichier_configuration/I configuration_file
Définit le fichier de configuration que SQLdiag doit utiliser.Sets the configuration file for SQLdiag to use. Par défaut, /I a la valeur SQLDiag.Xml.By default, /I is set to SQLDiag.Xml.

/O chemin_fichier_de_sortie/O output_folder_path
Redirige la sortie de SQLdiag vers le dossier spécifié.Redirects SQLdiag output to the specified folder. Si l’option /O n’est pas spécifiée, la sortie de SQLdiag est écrite dans un sous-dossier nommé SQLDIAG, sous le dossier de démarrage SQLdiag .If the /O option is not specified, SQLdiag output is written to a subfolder named SQLDIAG under the SQLdiag startup folder. Si le dossier SQLDIAG n’existe pas, SQLdiag tente de le créer.If the SQLDIAG folder does not exist, SQLdiag attempts to create it.

Note

L’emplacement du dossier de sortie varie en fonction de l’emplacement du dossier de support qui peut être spécifié à l’aide de l’option /P.The output folder location is relative to the support folder location that can be specified with /P. Si vous voulez définir un emplacement complètement différent pour le dossier de sortie, spécifiez le chemin complet du répertoire pour /O.To set an entirely different location for the output folder, specify the full directory path for /O.

/P chemin_dossier_support/P support_folder_path
Définit le chemin d'accès au dossier de support.Sets the support folder path. Par défaut, l’option /P a comme valeur le dossier qui contient le fichier exécutable SQLdiag .By default, /P is set to the folder where the SQLdiag executable resides. Le dossier de support contient les fichiers de prise en charge de SQLdiag , par exemple le fichier de configuration XML, les scripts Transact-SQL ainsi que d’autres fichiers dont l’utilitaire a besoin quand il collecte des diagnostics.The support folder contains SQLdiag support files, such as the XML configuration file, Transact-SQL scripts, and other files that the utility uses during diagnostics collection. Si vous utilisez cette option pour définir un autre chemin d’accès aux fichiers de prise en charge, SQLdiag copie automatiquement les fichiers de prise en charge indispensables dans le dossier spécifié s’ils ne s’y trouvent pas déjà.If you use this option to specify an alternate support files path, SQLdiag will automatically copy the support files it requires to the specified folder if they do not already exist.

Note

Pour définir votre dossier actif comme chemin de support, spécifiez %cd% sur la ligne de commande comme suit :To set your current folder as the support path, specify %cd% on the command line as follows:

SQLDIAG /P %cd%SQLDIAG /P %cd%

/N option_de_gestion_dossier_de_sortie/N output_folder_management_option
Indique si SQLdiag remplace ou renomme le dossier de sortie à son démarrage.Sets whether SQLdiag overwrites or renames the output folder when it starts up. Options disponibles :Available options:

1 = Remplace le dossier de sortie (par défaut)1 = Overwrites the output folder (default)

2 = Quand SQLdiag démarre, il renomme le dossier de sortie en SQLDIAG_00001, SQLDIAG_00002, etc.2 = When SQLdiag starts up, it renames the output folder to SQLDIAG_00001, SQLDIAG_00002, and so on. Une fois le dossier de sortie actif renommé, SQLdiag enregistre la nouvelle sortie dans le dossier de sortie par défaut, SQLDIAG.After renaming the current output folder, SQLdiag writes output to the default output folder SQLDIAG.

Note

SQLdiag n’ajoute pas la sortie au dossier de sortie actif quand il démarre.SQLdiag does not append output to the current output folder when it starts up. Il peut uniquement remplacer le dossier de sortie par défaut (option 1) ou renommer le dossier (option 2), puis enregistrer la sortie dans le nouveau dossier de sortie par défaut nommé SQLDIAG.It can only overwrite the default output folder (option 1) or rename the folder (option 2), and then it writes output to the new default output folder named SQLDIAG.

/M machine1 [ machine2machineN] | @machinelistfile/M machine1 [ machine2machineN] | @machinelistfile
Remplace les ordinateurs spécifiés dans le fichier de configuration.Overrides the machines specified in the configuration file. Par défaut, le fichier de configuration est SQLDiag.Xml ou est défini avec le paramètre /I .By default the configuration file is SQLDiag.Xml, or is set with the /I parameter. Lorsque vous spécifiez plusieurs ordinateurs, séparez chaque nom d'ordinateur avec un espace.When specifying more than one machine, separate each machine name with a space.

Le paramètre @machinelistfile spécifie un nom de fichier de liste d'ordinateurs à stocker dans le fichier de configuration.Using @machinelistfile specifies a machine list filename to be stored in the configuration file.

/C type_fichier_compression/C file_compression_type
Définit le type de compression de fichiers utilisé sur les fichiers du dossier de sortie de SQLdiag .Sets the type of file compression used on the SQLdiag output folder files. Options disponibles :Available options:

0 = aucune (par défaut)0 = none (default)

1 = utilise la compression NTFS1 = uses NTFS compression

/B [+]heure_début/B [+]start_time
Spécifie la date et l'heure de début de la collecte des données de diagnostics dans le format suivant :Specifies the date and time to start collecting diagnostic data in the following format:

AAAAMMJJ_HH:MM:SSYYYYMMDD_HH:MM:SS

L'heure est spécifiée en utilisant une notation de 24 heures.The time is specified using 24-hour notation. Par exemple, 2:00 P.M.For example, 2:00 P.M. doit être spécifié comme 14:00:00.should be specified as 14:00:00.

Utilisez + sans la date (HH:MM:SS seulement) pour spécifier une heure relative à la date et l’heure actuelle.Use + without the date (HH:MM:SS only) to specify a time that is relative to the current date and time. Par exemple, si vous spécifiez /B +02:00:00, SQLdiag attend deux heures avant de démarrer la collecte d’informations.For example, if you specify /B +02:00:00, SQLdiag will wait 2 hours before it starts collecting information.

N’insérez pas d’espace entre + et la valeur date_débutspécifiée.Do not insert a space between + and the specified start_time.

Si vous spécifiez une heure de début dans le passé, SQLdiag modifie cette date de façon à ce que la date et l’heure de début se situent dans le futur.If you specify a start time that is in the past, SQLdiag forcibly changes the start date so the start date and time are in the future. Par exemple, si vous spécifiez /B 01:00:00 et si l’heure actuelle est 08:00:00, SQLdiag remplace la date de début par la date du lendemain.For example, if you specify /B 01:00:00 and the current time is 08:00:00, SQLdiag forcibly changes the start date so that the start date is the next day.

Notez que SQLdiag utilise l’heure locale sur l’ordinateur sur lequel l’utilitaire s’exécute.Note that SQLdiag uses the local time on the computer where the utility is running.

/E [+]heure_fin/E [+]stop_time
Spécifie la date et l'heure d'arrêt de la collecte des données de diagnostics dans le format suivant :Specifies the date and time to stop collecting diagnostic data in the following format:

AAAAMMJJ_HH:MM:SSYYYYMMDD_HH:MM:SS

L'heure est spécifiée en utilisant une notation de 24 heures.The time is specified using 24-hour notation. Par exemple, 2:00 P.M.For example, 2:00 P.M. doit être spécifié comme 14:00:00.should be specified as 14:00:00.

Utilisez + sans la date (HH:MM:SS seulement) pour spécifier une heure relative à la date et l’heure actuelle.Use + without the date (HH:MM:SS only) to specify a time that is relative to the current date and time. Par exemple si vous spécifiez une heure de début et une heure de fin avec /B +02:00:00 /E +03:00:00, SQLdiag attend deux heures avant de démarrer la collecte d’informations, puis collecte des informations pendant trois heures avant de s’arrêter et de quitter.For example, if you specify a start time and end time by using /B +02:00:00 /E +03:00:00, SQLdiag waits 2 hours before it starts collecting information, then collects information for 3 hours before it stops and exits. Si /B n’est pas spécifié, SQLdiag débute la collecte de diagnostics immédiatement et l’arrête à la date et l’heure spécifiées par /E.If /B is not specified, SQLdiag starts collecting diagnostics immediately and ends at the date and time specified by /E.

N’insérez pas d’espace entre + et la valeur heure_début ou heure_finspécifié.Do not insert a space between + and the specified start_time or end_time.

Notez que SQLdiag utilise l’heure locale sur l’ordinateur sur lequel l’utilitaire s’exécute.Note that SQLdiag uses the local time on the computer where the utility is running.

/A nom_application_SQLdiag/A SQLdiag_application_name
Permet d’exécuter plusieurs instances de l’utilitaire SQLdiag SQL ServerSQL Server sur la même instance .Enables running multiple instances of the SQLdiag utility against the same SQL ServerSQL Server instance.

Chaque nom_application_SQLdiag identifie une instance différente de SQLdiag.Each SQLdiag_application_name identifies a different instance of SQLdiag. Il n’existe aucune relation entre une instance nom_application_SQLdiag et un nom d’instance SQL ServerSQL Server .No relationship exists between a SQLdiag_application_name instance and a SQL ServerSQL Server instance name.

Vous pouvez utilisernom_application_SQLdiag pour démarrer ou arrêter une instance spécifique du service SQLdiag .SQLdiag_application_name can be used to start or stop a specific instance of the SQLdiag service.

Par exemple :For example:

SQLDIAG START /A nom_application_SQLdiagSQLDIAG START /A SQLdiag_application_name

Vous pouvez aussi l’utiliser avec l’option /R pour enregistrer une instance spécifique de SQLdiag en tant que service.It can also be used with the /R option to register a specific instance of SQLdiag as a service. Par exemple :For example:

SQLDIAG /R /A nom_application_SQLdiagSQLDIAG /R /A SQLdiag_application_name

Note

SQLdiag ajoute automatiquement le préfixe DIAG$ au nom de l’instance spécifié pour nom_application_SQLdiag.SQLdiag automatically prefixes DIAG$ to the instance name specified for SQLdiag_application_name. Vous obtenez ainsi un nom de service pratique si vous inscrivez SQLdiag comme service.This provides a sensible service name if you register SQLdiag as a service.

/T { tcp [ ,port ] | np | lpc }/T { tcp [ ,port ] | np | lpc }
Permet de se connecter à une instance de SQL ServerSQL Server en utilisant le protocole spécifié.Connects to an instance of SQL ServerSQL Server using the specified protocol.

tcp [,port]tcp [,port]
Transmission Control Protocol/Internet Protocol (TCP/IP).Transmission Control Protocol/Internet Protocol (TCP/IP). Vous pouvez éventuellement spécifier un numéro de port pour la connexion.You can optionally specify a port number for the connection.

npnp
Canaux nommés.Named pipes. Par défaut, l'instance par défaut de SQL ServerSQL Server écoute le canal nommé \\.\pipe\sql\query et \\.\pipe\MSSQL$<instancename>\sql\query pour une instance nommée.By default, the default instance of SQL ServerSQL Server listens on named pipe \\.\pipe\sql\query and \\.\pipe\MSSQL$<instancename>\sql\query for a named instance. Vous ne pouvez pas vous connecter à une instance de SQL ServerSQL Server en utilisant un autre nom de canal.You cannot connect to an instance of SQL ServerSQL Server by using an alternate pipe name.

lpclpc
Appel de procédure locale.Local procedure call. Ce protocole de mémoire partagée est disponible si le client se connecte à une instance de SQL ServerSQL Server sur le même ordinateur.This shared memory protocol is available if the client is connecting to an instance of SQL ServerSQL Server on the same computer.

/Q/Q
Exécute SQLdiag en mode silencieux.Runs SQLdiag in quiet mode. /Q supprime toutes les invites, telles que les invites de mot de passe./Q suppresses all prompts, such as password prompts.

/G/G
Exécute SQLdiag en mode générique.Runs SQLdiag in generic mode. Quand l’option /G est spécifiée, SQLdiag n’effectue pas les contrôles de connectivité de SQL ServerSQL Server au démarrage. Il ne vérifie pas non plus l’adhésion de l’utilisateur au rôle de serveur fixe sysadmin .When /G is specified, on startup SQLdiag does not enforce SQL ServerSQL Server connectivity checks or verify that the user is a member of the sysadmin fixed server role. SQLdiag confie plutôt à Windows le soin de déterminer si un utilisateur dispose des droits appropriés pour collecter chacun des diagnostics demandés.Instead, SQLdiag defers to Windows to determine whether a user has the appropriate rights to gather each requested diagnostic.

Si l’option /G n’est pas spécifiée, SQLdiag détermine si l’utilisateur adhère au groupe Administrateurs de Windows et il ne collecte aucun diagnostic SQL ServerSQL Server s’il n’est pas membre du groupe Administrateurs .If /G is not specified, SQLdiag checks to determine whether the user is a member of the Windows Administrators group, and will not collect SQL ServerSQL Server diagnostics if the user is not an Administrators group member.

/R/R
Inscrit SQLdiag en tant que service.Registers SQLdiag as a service. Tous les arguments de ligne de commande qui sont spécifiés à l’inscription de SQLdiag en tant que service sont conservés pour de futures exécutions du service.Any command line arguments that are specified when you register SQLdiag as a service are preserved for future runs of the service.

Quand SQLdiag est inscrit comme service, le nom du service par défaut est SQLDIAG.When SQLdiag is registered as a service, the default service name is SQLDIAG. Vous pouvez modifiez ce nom au moyen de l’argument /A .You can change the service name by using the /A argument.

Utilisez l'argument de ligne de commande START pour démarrer le service.Use the START command line argument to start the service:

SQLDIAG STARTSQLDIAG START

Vous pouvez également utiliser la commande net start pour démarrer le service.You can also use the net start command to start the service:

net start SQLDIAGnet start SQLDIAG

/U/U
Annule l’inscription de SQLdiag en tant que service.Unregisters SQLdiag as a service.

Utilisez également l’argument /A si vous annulez l’inscription d’une instance SQLdiag nommée.Use the /A argument also if unregistering a named SQLdiag instance.

/L/L
Exécute SQLdiag en mode continu quand une heure de début ou de fin est également indiquée respectivement par le biais des arguments /B ou /E .Runs SQLdiag in continuous mode when a start time or end time is also specified with the /B or /E arguments, respectively. SQLdiag redémarre automatiquement après l’arrêt de la collecte des diagnostics en raison d’un arrêt programmé.SQLdiag automatically restarts after diagnostics collection stops due to a scheduled shutdown. Par exemple, en utilisant les arguments /E ou /X .For example, by using the /E or the /X arguments.

Note

SQLdiag ignore l’argument /L si aucune heure de début ni de fin n’est spécifiée à l’aide des arguments de ligne de commande /B et /E .SQLdiag ignores the /L argument if a start time or end time is not specified by using the /B and /E command line arguments.

L’utilisation de /L n’implique aucunement le mode service.Using /L does not imply the service mode. Pour utiliser /L quand vous exécutez SQLdiag en tant que service, spécifiez cet argument sur la ligne de commande au moment de l’inscription du service.To use /L when running SQLdiag as a service, specify it on the command line when you register the service.

/X/X
Exécute SQLdiag en mode d’instantané.Runs SQLdiag in snapshot mode. SQLdiag effectue un instantané de tous les diagnostics configurés, puis s’arrête automatiquement.SQLdiag takes a snapshot of all configured diagnostics and then shuts down automatically.

START | STOP | STOP_ABORTSTART | STOP | STOP_ABORT
Démarre ou arrête le service SQLdiag .Starts or stops the SQLdiag service. STOP_ABORT oblige le service à s’arrêter le plus rapidement possible, sans terminer la collecte de diagnostics en cours.STOP_ABORT forces the service to shut down as quickly as possible without finishing collection of diagnostics it is currently collecting.

Lorsqu'ils sont utilisés ces arguments destinés au contrôle du service doivent être placés en premier sur les lignes de commande.When these service control arguments are used, they must be the first argument used on the command line. Par exemple :For example:

SQLDIAG STARTSQLDIAG START

Seul l’argument /A , qui spécifie une instance nommée de SQLdiag, peut être utilisé avec START, STOPou STOP_ABORT pour prendre le contrôle d’une instance spécifique du service SQLdiag .Only the /A argument, which specifies a named instance of SQLdiag, can be used with START, STOP, or STOP_ABORT to control a specific instance of the SQLdiag service. Par exemple :For example:

SQLDIAG START /A nom_application_SQLdiagSQLDIAG START /A SQLdiag_application_name

Spécifications de sécuritéSecurity Requirements

Sauf si SQLdiag est exécuté en mode générique (avec l’argument de ligne de commande /G ), l’utilisateur qui exécute SQLdiag doit être membre du groupe Administrateurs de Windows et membre du rôle serveur fixe SQL ServerSQL Server sysadmin fixed server role.Unless SQLdiag is run in generic mode (by specifying the /G command line argument), the user who runs SQLdiag must be a member of the Windows Administrators group and a member of the SQL ServerSQL Server sysadmin fixed server role. Par défaut, SQLdiag établit la connexion à SQL ServerSQL Server en utilisant l’authentification Windows, mais il prend également en charge l’authentification SQL ServerSQL Server .By default, SQLdiag connects to SQL ServerSQL Server by using Windows Authentication, but it also supports SQL ServerSQL Server Authentication.

Considérations relatives aux performancesPerformance Considerations

Les effets sur les performances de l’exécution de SQLdiag varient selon le type de données de diagnostics dont vous avez configuré la collecte.The performance effects of running SQLdiag depend on the type of diagnostic data you have configured it to collect. Par exemple, si la configuration de SQLdiag prévoit la collecte d’informations de suivi de trace de SQL Server ProfilerSQL Server Profiler , les performances du serveur se trouveront affectées proportionnellement au nombre de classes d’événements à tracer.For example, if you have configured SQLdiag to collect SQL Server ProfilerSQL Server Profiler tracing information, the more event classes you choose to trace, the more your server performance is affected.

L’impact sur les performances d’exécution de SQLdiag équivaut approximativement à la somme des coûts de collecte des diagnostics configurés séparément.The performance impact of running SQLdiag is approximately equivalent to the sum of the costs of collecting the configured diagnostics separately. Par exemple, la collecte d’une trace avec SQLdiag implique le même coût de performances que sa collecte avec SQL Server ProfilerSQL Server Profiler.For example, collecting a trace with SQLdiag incurs the same performance cost as collecting it with SQL Server ProfilerSQL Server Profiler. L’impact sur les performances d’utilisation de SQLdiag est négligeable.The performance impact of using SQLdiag is negligible.

Espace disque requisRequired Disk Space

Comme SQLdiag peut recueillir différents types d’informations de diagnostics, l’espace disque libre requis pour exécuter SQLdiag est variable.Because SQLdiag can collect different types of diagnostic information, the free disk space that is required to run SQLdiag varies. La quantité d'informations de diagnostics recueillies dépend de la nature et du volume de la charge de travail que le serveur traite et peut être comprise entre quelques mégaoctets et plusieurs gigaoctets.The amount of diagnostic information collected depends on the nature and volume of the workload that the server is processing and may range from a few megabytes to several gigabytes.

Fichiers de configurationConfiguration Files

Au démarrage, SQLdiag lit le fichier de configuration et les arguments de ligne de commande qui ont été spécifiés.On startup, SQLdiag reads the configuration file and the command line arguments that have been specified. Vous spécifiez les types d’informations de diagnostics que SQLdiag collecte dans le fichier de configuration.You specify the types of diagnostic information that SQLdiag collects in the configuration file. Par défaut, SQLdiag utilise le fichier de configuration SQLDiag.Xml ; ce fichier, extrait chaque fois que l’outil s’exécute, se trouve dans le dossier de démarrage de l’utilitaire SQLdiag .By default, SQLdiag uses the SQLDiag.Xml configuration file, which is extracted each time the tool runs and is located in the SQLdiag utility startup folder. Le fichier de configuration utilise le schéma XML, SQLDiag_schema.xsd, qui est également extrait à partir du fichier exécutable dans le répertoire de démarrage de l’utilitaire chaque fois que SQLdiag s’exécute.The configuration file uses the XML schema, SQLDiag_schema.xsd, which is also extracted into the utility startup directory from the executable file each time SQLdiag runs.

Modification des fichiers de configurationEditing the Configuration Files

Vous pouvez copier et modifier SQLDiag.Xml pour changer les types de données de diagnostics collectées par SQLdiag .You can copy and edit SQLDiag.Xml to change the types of diagnostic data that SQLdiag collects. Lors de la modification du fichier de configuration, utilisez toujours un éditeur XML pouvant valider le fichier de configuration par rapport à son schéma XML, par exemple Management StudioManagement Studio.When editing the configuration file always use an XML editor that can validate the configuration file against its XML schema, such as Management StudioManagement Studio. Ne modifiez pas SQLDiag.Xml directement.You should not edit SQLDiag.Xml directly. Effectuez plutôt une copie de SQLDiag.Xml dans le même dossier et attribuez-lui un nouveau nom.Instead, make a copy of SQLDiag.Xml and rename it to a new file name in the same folder. Ensuite, modifiez le nouveau fichier et utilisez l’argument /I pour le passer à SQLdiag.Then edit the new file, and use the /I argument to pass it to SQLdiag.

Modification du fichier de configuration lors de l'exécution de SQLdiag en tant que serviceEditing the Configuration File When SQLdiag Runs as a Service

Si vous avez déjà exécuté SQLdiag en tant que service et que vous devez modifier le fichier de configuration, annulez l’inscription du service SQLDIAG en spécifiant l’argument de ligne de commande /U , puis réinscrivez le service avec l’argument de ligne de commande /R .If you have already run SQLdiag as a service and need to edit the configuration file, unregister the SQLDIAG service by specifying the /U command line argument and then re-register the service by using the /R command line argument. L'annulation de l'inscription du service puis sa réinscription supprime les anciennes informations de configuration mises en mémoire cache dans le Registre Windows.Unregistering and re-registering the service removes old configuration information that was cached in the Windows registry.

Dossier de sortieOutput Folder

Si vous ne spécifiez pas de dossier de sortie avec l’argument /O , SQLdiag crée un sous-dossier nommé SQLDIAG sous le dossier de démarrage de SQLdiag .If you do not specify an output folder with the /O argument, SQLdiag creates a subfolder named SQLDIAG under the SQLdiag startup folder. Pour la collecte d'informations de diagnostics impliquant un suivi à grand volume, tel que SQL Server ProfilerSQL Server Profiler , assurez-vous que le dossier de sortie se trouve sur un lecteur local offrant suffisamment d'espace pour stocker la sortie de diagnostics demandée.For diagnostic information collection that involves high volume tracing, such as SQL Server ProfilerSQL Server Profiler , make sure that the output folder is on a local drive with enough space to store the requested diagnostic output.

Quand il est redémarré, SQLdiag remplace le contenu du dossier de sortie.When SQLdiag is restarted, it overwrites the contents of the output folder. Pour éviter cela, spécifiez /N 2 sur la ligne de commande.To avoid this, specify /N 2 on the command line.

Processus de collecte de donnéesData Collection Process

Quand SQLdiag démarre, il effectue les contrôles d’initialisation nécessaires pour collecter les données de diagnostics qui ont été spécifiées dans SQLDiag.Xml.When SQLdiag starts, it performs the initialization checks necessary to collect the diagnostic data that have been specified in SQLDiag.Xml. Ce processus peut prendre plusieurs secondes.This process may take several seconds. Une fois que SQLdiag a démarré la collecte de données de diagnostics quand il est exécuté en tant qu’application de console, un message s’affiche pour vous signaler que la collecte de SQLdiag a commencé et que vous pouvez appuyer sur Ctrl+C pour l’arrêter.After SQLdiag has started collecting diagnostic data when it is run as a console application, a message displays informing you that SQLdiag collection has started and that you can press CTRL+C to stop it. Quand SQLdiag est exécuté en tant que service, un message similaire est écrit dans le journal d’événements de Windows.When SQLdiag is run as a service, a similar message is written to the Windows event log.

Si vous utilisez SQLdiag pour diagnostiquer un problème que vous pouvez reproduire, attendez la réception de ce message avant de reproduire le problème sur votre serveur.If you are using SQLdiag to diagnose a problem that you can reproduce, wait until you receive this message before you reproduce the problem on your server.

SQLdiag collecte la plupart des données de diagnostics en parallèle.SQLdiag collects most diagnostic data in parallel. Toutes les informations de diagnostics sont collectées en se connectant à des outils, tels que l’utilitaire SQL ServerSQL Server de ou le processeur de commandes Windows, sauf quand des informations sont recueillies à partir des journaux de performances et des journaux d’événements de Windows.All diagnostic information is collected by connecting to tools, such as the SQL ServerSQL Server sqlcmd utility or the Windows command processor, except when information is collected from Windows performance logs and event logs. SQLdiag utilise un thread de travail par ordinateur pour contrôler la collecte de données de diagnostics de ces autres outils, attendant souvent simultanément la fin de l’exécution de plusieurs outils.SQLdiag uses one worker thread per computer to monitor the diagnostic data collection of these other tools, often simultaneously waiting for several tools to complete. Pendant le processus de collecte, SQLdiag achemine les résultats de chaque diagnostic dans le dossier de sortie.During the collection process, SQLdiag routes the output from each diagnostic to the output folder.

Arrêt de la collecte de donnéesStopping Data Collection

Une fois que SQLdiag a démarré la collecte de données de diagnostics, il poursuit celle-ci sauf si vous l’arrêtez ou s’il est configuré pour s’arrêter à une heure spécifiée.After SQLdiag starts collecting diagnostic data, it continues to do so unless you stop it or it is configured to stop at a specified time. Vous pouvez configurer SQLdiag pour s’arrêter à une heure spécifique avec l’argument /E , qui permet de spécifier une heure d’arrêt ou avec l’argument /X , qui force l’exécution de SQLdiag en mode d’instantané.You can configure SQLdiag to stop at a specified time by using the /E argument, which allows you to specify a stop time, or by using the /X argument, which causes SQLdiag to run in snapshot mode.

Quand SQLdiag s’arrête, il arrête tous les diagnostics qu’il a commencés.When SQLdiag stops, it stops all diagnostics it has started. Par exemple, il arrête les traces du SQL Server ProfilerSQL Server Profiler dont il assurait la collecte, interrompt également les scripts Transact-SQLTransact-SQL en cours d'exécution ainsi que tous les sous-processus qu'il a générés pendant la collecte des données.For example, it stops SQL Server ProfilerSQL Server Profiler traces it was collecting, it stops executing Transact-SQLTransact-SQL scripts it was running, and it stops any sub processes it has spawned during data collection. Une fois la collecte des données de diagnostic terminée, SQLdiag prend fin.After diagnostic data collection has completed, SQLdiag exits.

Note

L’interruption du service SQLdiag n’est pas prise en charge.Pausing the SQLdiag service is not supported. Si vous tentez de suspendre le service SQLdiag , il s’arrête seulement après avoir fini la collecte des diagnostics qui était en cours au moment où vous l’avez interrompu.If you attempt to pause the SQLdiag service, it stops after it finishes collecting the diagnostics that it was collecting when you paused it. Si vous redémarrez SQLdiag suite à une interruption, l’application remplace le dossier de sortie en se lançant.If you restart SQLdiag after stopping it, the application restarts and overwrites the output folder. Pour éviter le remplacement de ce dossier, spécifiez /N 2 sur la ligne de commande.To avoid overwriting the output folder, specify /N 2 on the command line.

Pour arrêter SQLdiag lorsqu'il s'exécute en tant qu'application consoleTo stop SQLdiag when running as a console application

Si vous exécutez SQLdiag en tant qu’application console, appuyez sur Ctrl+C dans la fenêtre de console où SQLdiag s’exécute pour l’arrêter.If you are running SQLdiag as a console application, press CTRL+C in the console window where SQLdiag is running to stop it. Une fois que vous avez appuyé sur Ctrl+C, un message s’affiche dans la fenêtre de console pour vous signaler que la collecte de données SQLDiag se termine et que vous devez attendre l’arrêt du processus, ce qui peut prendre plusieurs minutes.After you press CTRL+C, a message displays in the console window informing you that SQLDiag data collection is ending, and that you should wait until the process shuts down, which may take several minutes.

Appuyez deux fois sur les touches Ctrl+C pour mettre fin à tous les processus de diagnostics enfants et arrêter immédiatement l'application.Press Ctrl+C twice to terminate all child diagnostic processes and immediately terminate the application.

Pour arrêter SQLdiag lorsqu'il s'exécute en tant que serviceTo stop SQLdiag when running as a service

Si vous exécutez SQLdiag en tant que service, exécutez SQLDiag STOP dans le dossier de démarrage SQLdiag pour l’arrêter.If you are running SQLdiag as a service, run SQLDiag STOP in the SQLdiag startup folder to stop it.

Si vous exécutez plusieurs instances de SQLdiag sur le même ordinateur, vous pouvez également mentionner le nom de l’instance SQLdiag sur la ligne de commande quand vous suspendez le service.If you are running multiple instances of SQLdiag on the same computer, you can also pass the SQLdiag instance name to on the command line when you stop the service. Utilisez, par exemple, la syntaxe suivante pour arrêter une instance SQLdiag nommée Instance1 :For example, to stop a SQLdiag instance named Instance1, use the following syntax:

SQLDIAG STOP /A Instance1  

Note

/A est le seul argument de ligne de commande pouvant être utilisé avec START, STOPou STOP_ABORT./A is the only command-line argument that can be used with START, STOP, or STOP_ABORT. Si vous devez spécifier une instance nommée de SQLdiag avec l’un des verbes de contrôle du service, placez /A après le verbe de contrôle sur la ligne de commande, comme illustré dans l’exemple de syntaxe précédent.If you need to specify a named instance of SQLdiag with one of the service control verbs, specify /A after the control verb on the command line as shown in the previous syntax example. Lorsqu'ils sont utilisés, les verbes de contrôle doivent impérativement occuper la place du premier argument sur une ligne de commande.When control verbs are used, they must be the first argument on the command line.

Pour arrêter le service le plus rapidement possible, exécutez SQLDIAG STOP_ABORT dans le dossier de démarrage de l’utilitaire.To stop the service as quickly as possible, run SQLDIAG STOP_ABORT in the utility startup folder. Cette commande interrompt toute collecte de diagnostics en cours d'exécution sans attendre que cette opération se termine.This command aborts any diagnostics collecting currently being performed without waiting for them to finish.

Note

Utilisez SQLDiag STOP ou SQLDIAG STOP_ABORT pour arrêter le service SQLdiag .Use SQLDiag STOP or SQLDIAG STOP_ABORT to stop the SQLdiag service. N’utilisez pas la console Services Windows pour arrêter SQLdiag ou d’autres services SQL ServerSQL Server .Do not use the Windows Services Console to stop SQLdiag or other SQL ServerSQL Server services.

Démarrage et arrêt automatiques de SQLdiagAutomatically Starting and Stopping SQLdiag

Pour démarrer et arrêter automatiquement la collecte de données de diagnostics à une heure spécifiée, utilisez les arguments /Bheure_début et /Eheure_fin , en vous servant d’une notation horaire sur 24 heures.To automatically start and stop diagnostic data collection at a specified time, use the /Bstart_time and /Estop_time arguments, using 24-hour notation. Par exemple, si vous dépannez un problème qui apparaît constamment vers 02:00:00, vous pouvez configurer SQLdiag pour qu’il démarre automatiquement la collecte de données de diagnostics à 01:00 et l’arrête à 03:00:00.For example, if you are troubleshooting a problem that consistently appears at approximately 02:00:00, you can configure SQLdiag to automatically start collecting diagnostic data at 01:00 and automatically stop at 03:00:00. Utilisez les arguments /B et /E pour spécifier les heures de début et de fin.Use the /B and /E arguments to specify the start and stop time. Utilisez la notation 24 heures pour spécifier des dates et heures précises de début et de fin au format AAAAMMJJ_HH:MM:SS.Use 24-hour notation to specify an exact start and stop date and time with the format YYYYMMDD_HH:MM:SS. Pour spécifier des heures de début et de fin relatives, utilisez le préfixe + devant ces heures et omettez la partie de la date (AAAAMMJJ_) comme dans l’exemple suivant, qui demande à SQLdiag d’attendre une heure avant de commencer la collecte d’informations, d’exécuter celle-ci pendant trois heures, puis de s’arrêter et de quitter :To specify a relative start or stop time, prefix the start and stop time with + and omit the date portion (YYYYMMDD_) as shown in the following example, which causes SQLdiag to wait 1 hour before it starts collecting information, then it collects information for 3 hours before it stops and exits:

sqldiag /B +01:00:00 /E +03:00:00  

Quand vous spécifiez une valeur heure_début relative, SQLdiag commence à une heure qui est cohérente par rapport à la date et l’heure actuelles.When a relative start_time is specified, SQLdiag starts at a time that is relative to the current date and time. Quand vous spécifiez une valeur heure_fin relative, SQLdiag se termine à une heure qui est chronologiquement cohérente par rapport à la valeur heure_débutspécifiée.When a relative end_time is specified, SQLdiag ends at a time that is relative to the specified start_time. Si les dates ou heures de démarrage et d’arrêt que vous spécifiez se situent dans le passé, SQLdiag change la date de démarrage afin que la date et l’heure de démarrage se situent dans le futur.If the start or end date and time that you have specified is in the past, SQLdiag forcibly changes the start date so that the start date and time are in the future.

Ceci présente des implications importantes sur les dates de démarrage et d'arrêt que vous choisissez.This has important implications on the start and end dates you choose. Prenons l'exemple suivant :Consider the following example:

sqldiag /B +01:00:00 /E 08:30:00  

Si l'heure actuelle est 08:00, l'heure de fin arrive avant que ne commence la collecte du diagnostic.If the current time is 08:00, the end time passes before diagnostic collection actually begins. Comme SQLDiag règle automatiquement les dates de début et de fin au jour suivant quand elles se produisent dans le passé, dans cet exemple la collecte des diagnostics commence à 09:00 aujourd’hui (une heure de début relative a été spécifiée avec +) et se poursuit jusqu’à 08:30 le lendemain matin.Because SQLDiag automatically adjusts start and end dates to the next day when they occur in the past, in this example diagnostic collection starts at 09:00 today (a relative start time has been specified with +) and continues collecting until 08:30 the following morning.

Arrêt et redémarrage de SQLdiag pour collecter des diagnostics quotidiennementStopping and Restarting SQLdiag to Collect Daily Diagnostics

Pour collecter un ensemble de diagnostics sur une base quotidienne sans devoir démarrer et arrêter manuellement SQLdiag, utilisez l’argument /L .To collect a specified set of diagnostics on a daily basis without having to manually start and stop SQLdiag, use the /L argument. L’argument /L force SQLdiag à s’exécuter de façon continue en redémarrant automatiquement après un arrêt programmé.The /L argument causes SQLdiag to run continuously by automatically restarting itself after a scheduled shutdown. Quand vous spécifiez l’option /L et que SQLdiag s’arrête car il a atteint l’heure de fin définie avec l’argument /E , ou qu’il s’arrête car il s’exécute en mode d’instantané avec l’argument /X , SQLdiag redémarre au lieu de se fermer.When /L is specified, and SQLdiag stops because it has reached the end time specified with the /E argument, or it stops because it is being run in snapshot mode by using the /X argument, SQLdiag restarts instead of exiting.

L’exemple suivant spécifie que SQLdiag s’exécute en mode continu pour redémarrer automatiquement après une collecte de données de diagnostics effectuée entre 03:00:00 et 05:00:00.The following example specifies that SQLdiag run in continuous mode to automatically restart after diagnostic data collecting occurs between 03:00:00 and 05:00:00.

sqldiag /B 03:00:00 /E 05:00:00 /L  

L’exemple suivant spécifie que SQLdiag s’exécute en mode continu pour redémarrer automatiquement après un instantané de données de diagnostics à 03:00:00.The following example specifies that SQLdiag run in continuous mode to automatically restart after taking a diagnostic data snapshot at 03:00:00.

sqldiag /B 03:00:00 /X /L  

Exécution de SQLdiag en tant que serviceRunning SQLdiag as a Service

Quand vous souhaitez utiliser SQLdiag pour collecter des données de diagnostics pendant de longues périodes durant lesquelles vous pourriez devoir vous déconnecter de l’ordinateur sur lequel s’exécute SQLdiag , vous pouvez l’exécuter en tant que service.When you want to use SQLdiag to collect diagnostic data for long periods of time during which you might need to log out of the computer on which SQLdiag is running, you can run it as a service.

Pour inscrire SQLDiag afin qu'il s'exécute en tant que serviceTo register SQLDiag to run as a service

Vous pouvez inscrire SQLdiag pour qu’il s’exécute en tant que service en spécifiant l’argument /R sur la ligne de commande.You can register SQLdiag to run as a service by specifying the /R argument at the command line. Cet argument inscrit SQLdiag afin qu’il s’exécute en tant que service.This registers SQLdiag to run as a service. Le nom du service SQLdiag est SQLDIAG.The SQLdiag service name is SQLDIAG. Tous les autres arguments que vous spécifiez sur la ligne de commande quand vous inscrivez SQLDiag en tant que service sont préservés et réutilisés au démarrage du service.Any other arguments you specify on the command line when you register SQLDiag as a service are preserved and reused when the service is started.

Si vous voulez modifier le nom de service SQLDIAG par défaut, utilisez l’argument de ligne de commande /A pour spécifier un autre nom.To change the default SQLDIAG service name, use the /A command-line argument to specify another name. SQLdiag ajoute automatiquement le préfixe DIAG$ à tout nom d’instance SQLdiag spécifié à l’aide l’argument /A pour créer des noms de services explicites et pratiques d’utilisation.SQLdiag automatically prefixes DIAG$ to any SQLdiag instance name specified with /A to create sensible service names.

Pour annuler l'instruction du service SQLDIAGTo unregister the SQLDIAG service

Pour annuler l’inscription du service, spécifiez l’argument /U .To unregister the service, specify the /U argument. L’annulation de l’inscription de SQLdiag en tant que service supprime également les clés de Registre Windows associées au service SQLDIAG.Unregistering SQLdiag as a service also deletes the Windows registry keys of the service.

Pour démarrer ou redémarrer le service SQLDIAGTo start or restart the SQLDIAG service

Pour démarrer ou redémarrer le service SQLDIAG, exécutez SQLDiag START à partir de la ligne de commande.To start or restart the SQLDIAG service, run SQLDiag START from the command line.

Si vous exécutez plusieurs instances de SQLdiag par le biais de l’argument /A , vous pouvez également mentionner le nom de l’instance SQLdiag sur la ligne de commande quand vous démarrez le service.If you are running multiple instances of SQLdiag by using the /A argument, you can also pass the SQLdiag instance name on the command line when you start the service. Utilisez, par exemple, la syntaxe suivante pour démarrer une instance SQLdiag nommée Instance1 :For example, to start a SQLdiag instance named Instance1, use the following syntax:

SQLDIAG START /A Instance1  

Vous pouvez également utiliser la commande net start pour démarrer le service SQLDIAG.You can also use the net start command to start the SQLDIAG service.

Quand il est redémarré, SQLdiagremplace le contenu du dossier de sortie actif.When you restart SQLdiag, it overwrites the contents in the current output folder. Pour éviter cela, spécifiez /N 2 sur la ligne de commande pour renommer le dossier de sortie au redémarrage de l’utilitaire.To avoid this, specify /N 2 on the command line to rename the output folder when the utility starts.

L’interruption du service SQLdiag n’est pas prise en charge.Pausing the SQLdiag service is not supported.

Exécution de plusieurs instances de SQLdiagRunning Multiple Instances of SQLdiag

Exécutez plusieurs instances de SQLdiag sur le même ordinateur en spécifiant /Anom_application_SQLdiag sur la ligne de commande.Run multiple instances of SQLdiag on the same computer by specifying /ASQLdiag_application_name on the command line. Ceci se révèle utile pour collecter différents jeux de diagnostics simultanément à partir de la même instance SQL ServerSQL Server .This is useful for collecting different sets of diagnostics simultaneously from the same SQL ServerSQL Server instance. Vous pouvez, par exemple, configurer une instance nommée de SQLdiag pour qu’elle assure en continu la collecte de données peu volumineuses.For example, you can configure a named instance of SQLdiag to continuously perform lightweight data collection. De cette façon, si un problème particulier survient sur SQL ServerSQL Server, vous avez la possibilité d’exécuter l’instance SQLdiag par défaut pour collecter des diagnostics sur le problème ou réunir un jeu de diagnostics que les services d’assistance de MicrosoftMicrosoft demanderont en vue d’émettre un diagnostic.Then, if a specific problem occurs on SQL ServerSQL Server, you can run the default SQLdiag instance to collect diagnostics for that problem, or to gather a set of diagnostics that MicrosoftMicrosoft Customer Support Services has asked you to gather to diagnose a problem.

Collecte de données de diagnostics à partir d'instances cluster de SQL ServerCollecting Diagnostic Data from Clustered SQL Server Instances

SQLdiag prend en charge la collecte des données de diagnostics à partir d’instances cluster SQL ServerSQL Server .SQLdiag supports collecting diagnostic data from clustered SQL ServerSQL Server instances. Pour recueillir des diagnostics de cluster SQL ServerSQL Server instances, assurez-vous que «. » est spécifié pour le nom attribut de la <Machine > dans la configuration du fichier SQLDiag.Xml et ne spécifiez pas le /G argument sur la ligne de commande.To gather diagnostics from clustered SQL ServerSQL Server instances, make sure that "." is specified for the name attribute of the <Machine> element in the configuration file SQLDiag.Xml and do not specify the /G argument on the command line. Par défaut, « . » est spécifié pour l’attribut name dans le fichier de configuration et l’argument /G est désactivé.By default, "." is specified for the name attribute in the configuration file and the /G argument is turned off. Il n'est généralement pas nécessaire de modifier le fichier de configuration ni les arguments de ligne de commande lors d'une collecte effectuée à partir d'une instance cluster SQL ServerSQL Server .Typically, you do not need to edit the configuration file or change the command line arguments when collecting from a clustered SQL ServerSQL Server instance.

Quand « . » est spécifié comme nom d’ordinateur, SQLdiag détecte qu’il fonctionne sur un cluster et récupère simultanément les informations des diagnostics à partir de toutes les instances virtuelles de SQL ServerSQL Server installées sur ce cluster.When "." is specified as the machine name, SQLdiag detects that it is running on a cluster, and simultaneously retrieves diagnostic information from all virtual instances of SQL ServerSQL Server that are installed on the cluster. Si vous souhaitez collecter des informations de diagnostic à partir d’une seule instance virtuelle de SQL ServerSQL Server s’exécutant sur un ordinateur, spécifiez cette SQL ServerSQL Server pour le nom attribut de la <Machine > dans SQLDiag.Xml.If you want to collect diagnostic information from only one virtual instance of SQL ServerSQL Server that is running on a computer, specify that virtual SQL ServerSQL Server for the name attribute of the <Machine> element in SQLDiag.Xml.

Note

Pour collecter des informations de traces de SQL Server ProfilerSQL Server Profiler à partir d'instances cluster SQL ServerSQL Server , les partages administratifs (ADMIN$) doivent être activés sur le cluster.To collect SQL Server ProfilerSQL Server Profiler trace information from clustered SQL ServerSQL Server instances, administrative shares (ADMIN$) must be enabled on the cluster.

Voir aussiSee Also

Référence de l’utilitaire d’invite de commandes (moteur de base de données)Command Prompt Utility Reference (Database Engine)