SQLdiag - utilitàSQLdiag Utility

SQLdiag è un'utilità di raccolta di dati diagnostici generica che può essere eseguita come applicazione console o come servizio.The SQLdiag utility is a general purpose diagnostics collection utility that can be run as a console application or as a service. È possibile usare SQLdiag per raccogliere i log e i file di dati da SQL ServerSQL Server e altri tipi di server, nonché per monitorare i server in un intervallo di tempo oppure risolvere problemi specifici dei server.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. L'utilitàSQLdiag è stata creata per velocizzare e semplificare la raccolta delle informazioni diagnostiche necessarie per il Servizio Supporto Tecnico Clienti MicrosoftMicrosoft .SQLdiag is intended to expedite and simplify diagnostic information gathering for MicrosoftMicrosoft Customer Support Services.

Nota

Poiché questa utilità è soggetta a modifiche, le applicazioni o gli script che ne utilizzano gli argomenti della riga di comando o che dipendono dal suo comportamento potrebbero non funzionare correttamente nelle versioni future.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.

L'utilitàSQLdiag può raccogliere i tipi di informazioni diagnostiche riportate di seguito:SQLdiag can collect the following types of diagnostic information:

  • Registri di prestazioni di WindowsWindows performance logs

  • Registri eventi di WindowsWindows event logs

  • SQL Server ProfilerSQL Server Profilertracce traces

  • SQL ServerSQL Serverinformazioni di blocco blocking information

  • SQL ServerSQL Serverinformazioni di configurazione configuration information

    Per specificare i tipi di informazione che si vogliono raccogliere con l'utilità SQLdiag , modificare il file di configurazione SQLDiag.xml, descritto nella sezione seguente.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.

SintassiSyntax


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 }  

ArgomentiArguments

/?/?
Visualizza le informazioni sull'utilizzo.Displays usage information.

/I configuration_file/I configuration_file
Imposta il file di configurazione usato da SQLdiag .Sets the configuration file for SQLdiag to use. Per impostazione predefinita, /I è impostato su SQLDiag.Xml.By default, /I is set to SQLDiag.Xml.

/O output_folder_path/O output_folder_path
Reindirizza l'output dell'utilità SQLdiag sulla cartella specificata.Redirects SQLdiag output to the specified folder. Se si omette l'opzione /O , l'output dell'utilità SQLdiag viene scritto in una sottocartella denominata SQLDIAG nella cartella di avvio SQLdiag .If the /O option is not specified, SQLdiag output is written to a subfolder named SQLDIAG under the SQLdiag startup folder. Se la cartella SQLDIAG non esiste, l'utilità SQLdiag cercherà di crearla.If the SQLDIAG folder does not exist, SQLdiag attempts to create it.

Nota

La posizione della cartella di output è relativa alla posizione della cartella di supporto che è possibile specificare mediante /P.The output folder location is relative to the support folder location that can be specified with /P. Per impostare una cartella di output completamente diversa, specificare il percorso completo della directory per /O.To set an entirely different location for the output folder, specify the full directory path for /O.

/P support_folder_path/P support_folder_path
Imposta il percorso della cartella di supporto.Sets the support folder path. Per impostazione predefinita, /P viene impostata sulla cartella nella quale risiede il file eseguibile di SQLdiag .By default, /P is set to the folder where the SQLdiag executable resides. La cartella di supporto contiene i file di supporto di SQLdiag , ad esempio il file di configurazione XML, gli script di Transact-SQL e altri file che l'utilità usa durante la raccolta dei dati diagnostici.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. Se si usa questa opzione per specificare un percorso alternativo per i file di supporto, SQLdiag copierà automaticamente i file di supporto necessari nella cartella specificata, se non esistono già.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.

Nota

Per impostare la cartella corrente come percorso di supporto, specificare %cd% nella riga di comando come segue:To set your current folder as the support path, specify %cd% on the command line as follows:

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

/N output_folder_management_option/N output_folder_management_option
Imposta la sovrascrittura o la ridenominazione della cartella di output all'avvio dell'utilità SQLdiag .Sets whether SQLdiag overwrites or renames the output folder when it starts up. Opzioni disponibili:Available options:

1 = sovrascrive la cartella di output (impostazione predefinita).1 = Overwrites the output folder (default)

2 = all'avvio di SQLdiag , rinomina la cartella di output in SQLDIAG_00001, SQLDIAG_00002 e così via.2 = When SQLdiag starts up, it renames the output folder to SQLDIAG_00001, SQLDIAG_00002, and so on. Dopo aver rinominato la cartella di output corrente, SQLdiag scrive l'output nella cartella di output predefinita SQLDIAG.After renaming the current output folder, SQLdiag writes output to the default output folder SQLDIAG.

Nota

ConSQLdiag l'output non viene accodato alla cartella di output corrente al momento dell'avvio.SQLdiag does not append output to the current output folder when it starts up. È possibile soltanto sovrascrivere la cartella di output predefinita (opzione 1) o rinominare la cartella (opzione 2), quindi l'output viene scritto nella nuova cartella di output predefinita denominata 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
Esegue l'override del computer specificato nel file di configurazione.Overrides the machines specified in the configuration file. Per impostazione predefinita il file di configurazione è SQLDiag.Xml o è impostato con il parametro /I .By default the configuration file is SQLDiag.Xml, or is set with the /I parameter. Quando si specifica più di un computer, separare ogni nome di computer con uno spazio.When specifying more than one machine, separate each machine name with a space.

L'utilizzo di @machinelistfile consente di specificare un nome di file di un elenco di computer da archiviare nel file di configurazione.Using @machinelistfile specifies a machine list filename to be stored in the configuration file.

/C file_compression_type/C file_compression_type
Imposta il tipo di compressione usato per i file nella cartella di output SQLdiag .Sets the type of file compression used on the SQLdiag output folder files. Opzioni disponibili:Available options:

0 = nessuna compressione (impostazione predefinita)0 = none (default)

1 = compressione NTFS1 = uses NTFS compression

/B [+]start_time/B [+]start_time
Specifica la data e l'ora di inizio della raccolta di dati diagnostici nel formato seguente:Specifies the date and time to start collecting diagnostic data in the following format:

AAAAMMGG_HH:MM:SSYYYYMMDD_HH:MM:SS

L'ora viene specificata nel formato 24 ore.The time is specified using 24-hour notation. Per specificare ad esempio le 2 del pomeriggioFor example, 2:00 P.M. deve essere specificato come 14:00:00.should be specified as 14:00:00.

Usare + senza specificare la data, ovvero solo HH:MM:SS, per specificare un'ora in relazione alla data e all'ora correnti.Use + without the date (HH:MM:SS only) to specify a time that is relative to the current date and time. Ad esempio, se si specifica /B +02:00:00, SQLdiag attenderà due ore prima di iniziare a raccogliere informazioni.For example, if you specify /B +02:00:00, SQLdiag will wait 2 hours before it starts collecting information.

Non inserire spazi tra + e il valore specificato per start_time.Do not insert a space between + and the specified start_time.

Se si specifica un'ora di inizio già trascorsa, SQLdiag modifica forzatamente la data di inizio in modo che faccia riferimento a un periodo futuro.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. Se ad esempio si specifica /B 01:00:00 e l'ora corrente è 08:00:00, SQLdiag modifica forzatamente la data di inizio in modo che venga impostata in corrispondenza del giorno successivo.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.

L'utilità SQLdiag usa l'ora locale del computer in cui è in esecuzione.Note that SQLdiag uses the local time on the computer where the utility is running.

/E [+]stop_time/E [+]stop_time
Specifica la data e l'ora di arresto della raccolta di dati diagnostici nel formato seguente:Specifies the date and time to stop collecting diagnostic data in the following format:

AAAAMMGG_HH:MM:SSYYYYMMDD_HH:MM:SS

L'ora viene specificata nel formato 24 ore.The time is specified using 24-hour notation. Per specificare ad esempio le 2 del pomeriggioFor example, 2:00 P.M. deve essere specificato come 14:00:00.should be specified as 14:00:00.

Usare + senza specificare la data, ovvero solo HH:MM:SS, per specificare un'ora in relazione alla data e all'ora correnti.Use + without the date (HH:MM:SS only) to specify a time that is relative to the current date and time. Se ad esempio si specifica un'ora di inizio e un'ora di fine usando /B +02:00:00 /E +03:00:00, SQLdiag attenderà 2 ore prima di iniziare a raccogliere informazioni. I dati verranno raccolti per 3 ore prima che l'utilità venga arrestata e chiusa.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. Se si omette /B , SQLdiag inizia a raccogliere subito i dati diagnostici e termina alla data e all'ora specificate da /E.If /B is not specified, SQLdiag starts collecting diagnostics immediately and ends at the date and time specified by /E.

Non inserire spazi tra + e il valore specificato per start_time o end_time.Do not insert a space between + and the specified start_time or end_time.

L'utilità SQLdiag usa l'ora locale del computer in cui è in esecuzione.Note that SQLdiag uses the local time on the computer where the utility is running.

/A SQLdiag_application_name/A SQLdiag_application_name
Abilita l'esecuzione di più istanze dell'utilità SQLdiag sulla base della stessa istanza di SQL ServerSQL Server .Enables running multiple instances of the SQLdiag utility against the same SQL ServerSQL Server instance.

Ogni SQLdiag_application_name identifica un'istanza diversa di SQLdiag.Each SQLdiag_application_name identifies a different instance of SQLdiag. Non esiste alcuna relazione tra un'istanza SQLdiag_application_name e il nome di un'istanza di SQL ServerSQL Server .No relationship exists between a SQLdiag_application_name instance and a SQL ServerSQL Server instance name.

È possibile usareSQLdiag_application_name per avviare o arrestare un'istanza specifica del servizio SQLdiag .SQLdiag_application_name can be used to start or stop a specific instance of the SQLdiag service.

Esempio:For example:

SQLDIAG START /A SQLdiag_application_nameSQLDIAG START /A SQLdiag_application_name

È anche possibile usare tale parametro con l'opzione /R per registrare un'istanza specifica di SQLdiag come servizio.It can also be used with the /R option to register a specific instance of SQLdiag as a service. Esempio:For example:

SQLDIAG /R /A SQLdiag_application_nameSQLDIAG /R /A SQLdiag_application_name

Nota

SQLdiag aggiunge automaticamente il prefisso DIAG$ al nome dell'istanza specificato per SQLdiag_application_name.SQLdiag automatically prefixes DIAG$ to the instance name specified for SQLdiag_application_name. In questo modo viene messo a disposizione un nome di servizio appropriato se si registra SQLdiag come servizio.This provides a sensible service name if you register SQLdiag as a service.

/T { tcp [ ,port ] | np | lpc }/T { tcp [ ,port ] | np | lpc }
Consente di connettersi a un'istanza di SQL ServerSQL Server usando il protocollo specificato.Connects to an instance of SQL ServerSQL Server using the specified protocol.

tcp [,port]tcp [,port]
Protocollo TCP/IP (Transmission Control Protocol/Internet Protocol).Transmission Control Protocol/Internet Protocol (TCP/IP). È possibile specificare facoltativamente un numero di porta per la connessione.You can optionally specify a port number for the connection.

npnp
Named pipe.Named pipes. Per impostazione predefinita, l'istanza predefinita di SQL ServerSQL Server resta in attesa sulla named pipe \\.\pipe\sql\query e \\.\pipe\MSSQL$<instancename>\sql\query per un'istanza denominata.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. Non è possibile connettersi a un'istanza di SQL ServerSQL Server tramite un nome della pipe alternativo.You cannot connect to an instance of SQL ServerSQL Server by using an alternate pipe name.

lpclpc
Chiamata di procedura locale.Local procedure call. Il protocollo Shared Memory è disponibile se il client si connette a un'istanza di SQL ServerSQL Server nello stesso computer.This shared memory protocol is available if the client is connecting to an instance of SQL ServerSQL Server on the same computer.

/Q/Q
Esegue SQLdiag in modalità non interattiva.Runs SQLdiag in quiet mode. /Q disattiva tutti i prompt, ad esempio i prompt delle password./Q suppresses all prompts, such as password prompts.

/G/G
Esegue SQLdiag in modalità generica.Runs SQLdiag in generic mode. Se si specifica /G , all'avvio dell'utilità SQLdiag non vengono eseguiti i controlli della connettività di SQL ServerSQL Server né viene verificata l'appartenenza dell'utente al ruolo predefinito del server 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. L'utilità SQLdiag usa invece Windows per determinare se un utente ha le autorizzazioni sufficienti per raccogliere i dati diagnostici richiesti.Instead, SQLdiag defers to Windows to determine whether a user has the appropriate rights to gather each requested diagnostic.

Se si omette /G , SQLdiag verifica se l'utente è membro del gruppo Administrators di Windows e non procede alla raccolta dei dati diagnostici di SQL ServerSQL Server se l'utente non appartiene al gruppo Administrators .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
Registra SQLdiag come servizio.Registers SQLdiag as a service. Gli argomenti della riga di comando specificati per registrare l'utilità SQLdiag come servizio vengono conservati per le esecuzioni future del servizio stesso.Any command line arguments that are specified when you register SQLdiag as a service are preserved for future runs of the service.

Se l'utilità SQLdiag viene registrata come servizio, il nome del servizio predefinito è SQLDIAG.When SQLdiag is registered as a service, the default service name is SQLDIAG. È possibile modificare il nome del servizio usando l'argomento /A .You can change the service name by using the /A argument.

Utilizzare l'argomento della riga di comando START per avviare il servizio:Use the START command line argument to start the service:

SQLDIAG STARTSQLDIAG START

È inoltre possibile utilizzare il comando net start per avviare il servizio:You can also use the net start command to start the service:

net start SQLDIAGnet start SQLDIAG

/U/U
Annulla la registrazione di SQLdiag come servizio.Unregisters SQLdiag as a service.

Usare l'argomento /A anche se si annulla la registrazione di un'istanza denominata di SQLdiag .Use the /A argument also if unregistering a named SQLdiag instance.

/L/L
Esegue l'utilità SQLdiag in modalità continua quando si specificano un'ora di inizio o fine rispettivamente con gli argomenti /B o /E .Runs SQLdiag in continuous mode when a start time or end time is also specified with the /B or /E arguments, respectively. L'utilitàSQLdiag viene automaticamente riavviata in seguito all'arresto della raccolta di dati diagnostici a causa di una chiusura pianificata impostataSQLdiag automatically restarts after diagnostics collection stops due to a scheduled shutdown. tramite, ad esempio, l'argomento /E o /X .For example, by using the /E or the /X arguments.

Nota

SQLdiag ignora l'argomento /L se non si specifica un'ora di inizio e fine con gli argomenti della riga di comando /B e /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'uso dell'argomento /L non implica la definizione della modalità del servizio.Using /L does not imply the service mode. Per usare /L per l'esecuzione dell'utilità SQLdiag come servizio, specificare l'argomento nella riga di comando quando si registra il servizio.To use /L when running SQLdiag as a service, specify it on the command line when you register the service.

/X/X
Esegue SQLdiag in modalità snapshot.Runs SQLdiag in snapshot mode. L'utilitàSQLdiag esegue uno snapshot di tutti i dati diagnostici configurati, quindi viene chiusa automaticamente.SQLdiag takes a snapshot of all configured diagnostics and then shuts down automatically.

START | STOP | STOP_ABORTSTART | STOP | STOP_ABORT
Avvia o arresta il servizio SQLdiag .Starts or stops the SQLdiag service. STOP_ABORT forza il servizio di arrestarsi al più presto senza portare a termine la raccolta dei dati diagnostici in corso.STOP_ABORT forces the service to shut down as quickly as possible without finishing collection of diagnostics it is currently collecting.

Questi argomenti di controllo del servizio devono essere i primi nella riga di comando quando vengono utilizzati.When these service control arguments are used, they must be the first argument used on the command line. Esempio:For example:

SQLDIAG STARTSQLDIAG START

L' argomento /A , che specifica un'istanza denominata di SQLdiag, è l'unico che può essere usato con START, STOPo STOP_ABORT per il controllo di un'istanza specifica del servizio 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. Esempio:For example:

SQLDIAG START /A SQLdiag_application_nameSQLDIAG START /A SQLdiag_application_name

Requisiti di sicurezzaSecurity Requirements

Se l'utilità SQLdiag non viene eseguita in modalità generica specificando l'argomento della riga di comando /G , l'utente che esegue SQLdiag deve essere membro del gruppo Administrators di Windows e membro del ruolo predefinito del server SQL ServerSQL Server sysadmin .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. Per impostazione predefinita, l'utilità SQLdiag esegue la connessione a SQL ServerSQL Server usando l'autenticazione di Windows, ma supporta anche l'autenticazione di SQL ServerSQL Server .By default, SQLdiag connects to SQL ServerSQL Server by using Windows Authentication, but it also supports SQL ServerSQL Server Authentication.

Considerazioni sulle prestazioniPerformance Considerations

Le prestazioni relative all'esecuzione dell'utilità SQLdiag dipendono dal tipo di dati diagnostici configurati per la raccolta.The performance effects of running SQLdiag depend on the type of diagnostic data you have configured it to collect. Se ad esempio l'utilità SQLdiag è stata configurata per raccogliere informazioni di traccia di SQL Server ProfilerSQL Server Profiler , maggiore è il numero di classi degli eventi selezionate per la raccolta delle tracce, maggiore sarà l'impatto sulle prestazioni del server.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'impatto sulle prestazioni dell'esecuzione dell'utilità SQLdiag è pari circa alla somma dei costi di raccolta dei dati diagnostici configurati separatamente.The performance impact of running SQLdiag is approximately equivalent to the sum of the costs of collecting the configured diagnostics separately. La raccolta di una traccia con l'utilità SQLdiag , ad esempio, è caratterizzata dagli stessi costi a livello di prestazioni della raccolta degli stessi dati con 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'impatto dell'uso dell'utilità SQLdiag sulle prestazioni è irrilevante.The performance impact of using SQLdiag is negligible.

Spazio su disco richiestoRequired Disk Space

Poiché l'utilità SQLdiag può raccogliere tipi diversi di dati diagnostici, lo spazio libero su disco richiesto per l'esecuzione di SQLdiag può variare.Because SQLdiag can collect different types of diagnostic information, the free disk space that is required to run SQLdiag varies. La quantità di dati diagnostici raccolti dipende dalla natura e dal volume del carico di lavoro che il server sta elaborando e può variare da pochi megabyte a una quantità rilevante di gigabyte.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.

File di configurazioneConfiguration Files

All'avvio dell'utilità SQLdiag vengono letti il file di configurazione e gli argomenti della riga di comando specificati.On startup, SQLdiag reads the configuration file and the command line arguments that have been specified. Nel file di configurazione vengono specificati i tipi di dati diagnostici raccolti dall'utilità SQLdiag .You specify the types of diagnostic information that SQLdiag collects in the configuration file. Per impostazione predefinita, l'utilità SQLdiag usa il file di configurazione SQLDiag.Xml, disponibile a ogni esecuzione nella cartella di avvio dell'utilità 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. Il file di configurazione usa l'XML Schema SQLDiag_schema.xsd estratto dalla directory di avvio dell'utilità dal file eseguibile ad ogni esecuzione di SQLdiag .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.

Modifica dei file di configurazioneEditing the Configuration Files

È possibile copiare e modificare il file SQLDiag.Xml per modificare i tipi di dati diagnostici raccolti dall'utilità SQLdiag .You can copy and edit SQLDiag.Xml to change the types of diagnostic data that SQLdiag collects. Durante la modifica del file di configurazione utilizzare sempre un editor XML in grado di convalidare il file in base al relativo XML Schema, ad esempio 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. Non è consigliabile modificare SQLDiag.Xml direttamente.You should not edit SQLDiag.Xml directly. Creare invece una copia del file SQLDiag.Xml e ridenominarlo con un nome file diverso nella stessa cartella.Instead, make a copy of SQLDiag.Xml and rename it to a new file name in the same folder. A questo punto, modificare il nuovo file e usare l'argomento /I per passarlo all'utilità SQLdiag.Then edit the new file, and use the /I argument to pass it to SQLdiag.

Modifica del file di configurazione in caso di esecuzione di SQLdiag come servizioEditing the Configuration File When SQLdiag Runs as a Service

Se l'utilità SQLdiag è già stata eseguita come servizio ed è necessario modificare il file di configurazione, annullare la registrazione del servizio SQLDIAG specificando l'argomento della riga di comando /U e quindi rieseguendo la registrazione del servizio usando l'argomento della riga di comando /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'annullamento della registrazione e la successiva nuova registrazione comportano la rimozione delle vecchie informazioni di configurazione memorizzate nella cache del Registro di sistema di Windows.Unregistering and re-registering the service removes old configuration information that was cached in the Windows registry.

Cartella di outputOutput Folder

Se non si specifica una cartella di output con l'argomento /O , l'utilità SQLdiag crea una sottocartella denominata SQLDIAG nella cartella di avvio SQLdiag .If you do not specify an output folder with the /O argument, SQLdiag creates a subfolder named SQLDIAG under the SQLdiag startup folder. Per la raccolta di dati diagnostici che comportano un elevato numero di tracce, ad esempio SQL Server ProfilerSQL Server Profiler , verificare che la cartella di output si trovi in un'unità locale dotata di spazio sufficiente per archiviare l'output di dati diagnostici richiesto.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.

Quando l'utilità SQLdiag viene riavviata, i contenuti della cartella di output vengono sovrascritti.When SQLdiag is restarted, it overwrites the contents of the output folder. Per evitare la sovrascrittura, specificare /N 2 nella riga di comando.To avoid this, specify /N 2 on the command line.

Processo di raccolta dei datiData Collection Process

Quando viene avviata, l'utilità SQLdiag esegue i controlli di inizializzazione necessari per raccogliere i dati diagnostici specificati nel file SQLDiag.Xml.When SQLdiag starts, it performs the initialization checks necessary to collect the diagnostic data that have been specified in SQLDiag.Xml. Questo processo potrebbe richiedere alcuni secondi.This process may take several seconds. Dopo che l'utilità SQLdiag eseguita come applicazione console ha iniziato a raccogliere i dati diagnostici, viene visualizzato un messaggio indicante che la raccolta di SQLdiag è iniziata e che è possibile premere CTRL+C per arrestarla.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. Se l'utilità SQLdiag viene eseguita come servizio, un messaggio simile viene scritto nel registro eventi di Windows.When SQLdiag is run as a service, a similar message is written to the Windows event log.

In caso di uso dell'utilità SQLdiag per diagnosticare un problema che è possibile riprodurre, attendere la visualizzazione di questo messaggio prima di riprodurre il problema nel server.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.

L'utilitàSQLdiag raccoglie la maggior parte dei dati diagnostici in parallelo.SQLdiag collects most diagnostic data in parallel. Tutti i dati diagnostici vengono raccolti con la connessione a strumenti, ad esempio l'utilità SQL ServerSQL Server di oppure il processore dei comandi di Windows, tranne quando le informazioni vengono raccolte dai registri di prestazioni e dai registri eventi di 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. L'utilitàSQLdiag usa un thread di lavoro per computer per monitorare la raccolta di dati diagnostici da questi strumenti, spesso attendendo contemporaneamente il completamento della raccolta da parte di più strumenti.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. Durante il processo di raccolta l'utilità SQLdiag instrada l'output di ogni dato diagnostico alla cartella di output.During the collection process, SQLdiag routes the output from each diagnostic to the output folder.

Arresto della raccolta di datiStopping Data Collection

Dopo l'inizio della raccolta di dati diagnostici, l'utilità SQLdiag continua a raccogliere informazioni finché non viene arrestata manualmente oppure in base all'ora di arresto specificata.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. Per configurare l'arresto dell'esecuzione dell'utilità SQLdiag a un'ora specifica, usare l'argomento /E , che consente di specificare l'ora di arresto desiderata, oppure l'argomento /X , che imposta l'esecuzione dell'utilità SQLdiag in modalità snapshot.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.

Quando viene arrestata, l'utilità SQLdiag arresta tutti i processi di diagnostica avviati.When SQLdiag stops, it stops all diagnostics it has started. Vengono ad esempio arrestati la raccolta delle tracce di SQL Server ProfilerSQL Server Profiler , gli script Transact-SQLTransact-SQL in esecuzione e qualsiasi processo secondario generato durante la raccolta dei dati.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. Quando la raccolta di dati diagnostici è completata, l'utilità SQLdiag viene chiusa.After diagnostic data collection has completed, SQLdiag exits.

Nota

La sospensione del servizio dell'utilità SQLdiag non è supportata.Pausing the SQLdiag service is not supported. Se si prova a sospendere il servizio SQLdiag , l'arresto si verifica al termine della raccolta dei dati diagnostici in corso al momento della sospensione.If you attempt to pause the SQLdiag service, it stops after it finishes collecting the diagnostics that it was collecting when you paused it. Se si riavvia l'utilità SQLdiag dopo averla arrestata, l'applicazione viene riavviata e sovrascrive la cartella di output.If you restart SQLdiag after stopping it, the application restarts and overwrites the output folder. Per evitare la sovrascrittura della cartella di output, specificare /N 2 nella riga di comando.To avoid overwriting the output folder, specify /N 2 on the command line.

Per arrestare l'esecuzione dell'utilità SQLdiag come applicazione consoleTo stop SQLdiag when running as a console application

Se l'utilità SQLdiag è eseguita come applicazione console, premere CTRL+C nella finestra della console in cui l'utilità SQLdiag è in esecuzione per arrestarla.If you are running SQLdiag as a console application, press CTRL+C in the console window where SQLdiag is running to stop it. Dopo aver premuto CTRL+C, nella finestra della console viene visualizzato un messaggio indicante che la raccolta di dati da parte di SQLDiag sta per essere interrotta, che è necessario attendere che il processo venga interrotto e che questa operazione potrebbe richiedere alcuni minuti.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.

Premere Ctrl+C due volte per terminare tutti i processi figlio di raccolta dei dati diagnostici e terminare l'applicazione immediatamente.Press Ctrl+C twice to terminate all child diagnostic processes and immediately terminate the application.

Per arrestare l'esecuzione dell'utilità SQLdiag come servizioTo stop SQLdiag when running as a service

Se si esegue l'utilità SQLdiag come servizio, eseguire SQLDiag STOP nella cartella di avvio di SQLdiag per arrestarlo.If you are running SQLdiag as a service, run SQLDiag STOP in the SQLdiag startup folder to stop it.

Se si eseguono più istanze di SQLdiag nello stesso computer, è anche possibile passare il nome dell'istanza di SQLdiag nella riga di comando quando si arresta il servizio.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. Per arrestare un'istanza di SQLdiag denominata Instance1, ad esempio, usare la sintassi seguente:For example, to stop a SQLdiag instance named Instance1, use the following syntax:

SQLDIAG STOP /A Instance1  

Nota

/A è il solo argomento della riga di comando che può essere utilizzato con START, STOPo STOP_ABORT./A is the only command-line argument that can be used with START, STOP, or STOP_ABORT. Se è necessario specificare un'istanza denominata di SQLdiag con uno dei verbi di controllo del servizio, specificare /A dopo il verbo di controllo nella riga di comando, come indicato nell'esempio di sintassi precedente.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. I verbi di controllo del servizio devono essere il primo argomento nella riga di comando quando vengono utilizzati.When control verbs are used, they must be the first argument on the command line.

Per arrestare il servizio al più presto, eseguire SQLDIAG STOP_ABORT nella cartella di avvio dell'utilità.To stop the service as quickly as possible, run SQLDIAG STOP_ABORT in the utility startup folder. Questo comando annulla tutte le raccolte di dati diagnostici in corso senza attenderne il completamento.This command aborts any diagnostics collecting currently being performed without waiting for them to finish.

Nota

Usare SQLDiag STOP o SQLDIAG STOP_ABORT per arrestare il servizio SQLdiag .Use SQLDiag STOP or SQLDIAG STOP_ABORT to stop the SQLdiag service. Non usare la console dei servizi Windows per arrestare SQLdiag o gli altri servizi di SQL ServerSQL Server .Do not use the Windows Services Console to stop SQLdiag or other SQL ServerSQL Server services.

Avvio e arresto automatici dell'utilità SQLdiagAutomatically Starting and Stopping SQLdiag

Per avviare e arrestare automaticamente la raccolta di dati diagnostici a un'ora specificata, usare gli argomenti /Bstart_time e /Estop_time nel formato 24 ore.To automatically start and stop diagnostic data collection at a specified time, use the /Bstart_time and /Estop_time arguments, using 24-hour notation. Se, ad esempio, si sta cercando di risolvere un problema che si verifica regolarmente alle 02:00:00 circa, è possibile configurare l'utilità SQLdiag in modo che inizi automaticamente a raccogliere dati diagnostici alle 01:00 e si arresti automaticamente alle 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. Usare gli argomenti /B e /E per specificare l'ora di inizio e di fine.Use the /B and /E arguments to specify the start and stop time. Utilizzare il formato 24 ore per specificare la data e l'ora di inizio e fine corrette nel formato AAAAMMGG_HH:MM:SS.Use 24-hour notation to specify an exact start and stop date and time with the format YYYYMMDD_HH:MM:SS. Per specificare una data di inizio o fine relativa, anteporre il segno + all'ora di inizio e fine omettendo la parte relativa alla data (AAAAMMGG_) come illustrato nell'esempio seguente. In questo modo, l'utilità SQLdiag attende un'ora prima di iniziare a raccogliere le informazioni. I dati vengono raccolti per 3 ore prima che l'utilità venga arrestata e chiusa.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  

Se si specifica un valore relativo per start_time , l'utilità SQLdiag viene avviata a un'ora relativa rispetto alla data e all'ora correnti.When a relative start_time is specified, SQLdiag starts at a time that is relative to the current date and time. Se si specifica un valore relativo per end_time , l'utilità SQLdiag viene interrotta a un'ora relativa rispetto al valore specificato per start_time.When a relative end_time is specified, SQLdiag ends at a time that is relative to the specified start_time. Se la data o l'ora di inizio e fine specificate sono già trascorse, l'utilità SQLdiag modifica forzatamente la data e l'ora di inizio in modo che facciano riferimento a un periodo futuro.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.

Ciò ha implicazioni molto importanti sulle date di inizio e fine selezionate.This has important implications on the start and end dates you choose. Si consideri l'esempio descritto di seguito.Consider the following example:

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

Se l'ora corrente è 08:00, l'ora di fine è già trascorsa prima dell'inizio della raccolta di dati diagnostici.If the current time is 08:00, the end time passes before diagnostic collection actually begins. Poiché l'utilità SQLDiag modifica automaticamente le date di inizio e fine riferendole al giorno successivo qualora siano già trascorse, in questo esempio la raccolta di dati diagnostici inizia alle 09:00 della data corrente (è stata specificata un'ora di inizio relativa con il prefisso +) e continua fino alle 08:30 del giorno successivo.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.

Arresto e riavvio di SQLdiag per la raccolta giornaliera di dati diagnosticiStopping and Restarting SQLdiag to Collect Daily Diagnostics

Per raccogliere un set specifico di dati diagnostici su base giornaliera senza dover avviare e arrestare manualmente l'utilità SQLdiag, usare l'argomento /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'argomento /L consente di impostare l'esecuzione continua dell'utilità SQLdiag grazie all'impostazione del riavvio automatico dell'utilità dopo un'interruzione pianificata.The /L argument causes SQLdiag to run continuously by automatically restarting itself after a scheduled shutdown. Se si specifica l'argomento /L e l'utilità SQLdiag viene arrestata perché ha raggiunto l'ora di fine specificata dall'argomento /E oppure perché viene eseguita in modalità snapshot specificata con l'argomento /X , l'utilità SQLdiag non viene chiusa, bensì riavviata.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.

Nell'esempio seguente l'utilità SQLdiag eseguita in modalità continua viene automaticamente riavviata dopo che la raccolta di dati diagnostici è stata eseguita dalle 03:00:00 alle 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  

Nell'esempio seguente l'utilità SQLdiag eseguita in modalità continua viene riavviata automaticamente dopo l'esecuzione di uno snapshot dei dati diagnostici alle 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  

Esecuzione dell'utilità SQLdiag come servizioRunning SQLdiag as a Service

Se si vuole usare l'utilità SQLdiag per raccogliere dati diagnostici per lunghi periodi di tempo durante i quali potrebbe essere necessario disconnettersi dal computer sul quale l'utilità SQLdiag è in esecuzione, è possibile eseguire l'utilità come servizio.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.

Per registrare l'utilità SQLDiag in modo che venga eseguita come servizioTo register SQLDiag to run as a service

È possibile registrare l'utilità SQLdiag in modo che venga eseguita come servizio specificando l'argomento /R nella riga di comando.You can register SQLdiag to run as a service by specifying the /R argument at the command line. L'utilità SQLdiag viene registrata in modo che venga eseguita come servizio.This registers SQLdiag to run as a service. Il nome del servizio dell'utilità SQLdiag è SQLDIAG.The SQLdiag service name is SQLDIAG. Qualsiasi altro argomento specificato nella riga di comando durante la registrazione dell'utilità SQLDiag come servizio viene memorizzato e riutilizzato quando il servizio viene avviato.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.

Per modificare il nome del servizio SQLDIAG predefinito, usare l'argomento della riga di comando /A per specificare un altro nome.To change the default SQLDIAG service name, use the /A command-line argument to specify another name. SQLdiag aggiunge automaticamente il prefisso DIAG$ a qualsiasi nome dell'istanza di SQLdiag specificato con /A per creare nomi di servizio appropriati.SQLdiag automatically prefixes DIAG$ to any SQLdiag instance name specified with /A to create sensible service names.

Per annullare la registrazione del servizio SQLDIAGTo unregister the SQLDIAG service

Per annullare la registrazione del servizio, specificare l'argomento /U .To unregister the service, specify the /U argument. L'annullamento della registrazione dell'utilità SQLdiag come servizio comporta l'eliminazione anche delle chiavi del Registro di sistema di Windows.Unregistering SQLdiag as a service also deletes the Windows registry keys of the service.

Per avviare o riavviare il servizio SQLDIAGTo start or restart the SQLDIAG service

Per avviare o riavviare il servizio SQLDIAG, eseguire SQLDiag START dalla riga di comando.To start or restart the SQLDIAG service, run SQLDiag START from the command line.

Se si eseguono più istanze di SQLdiag usando l'argomento /A , è anche possibile passare il nome dell'istanza di SQLdiag nella riga di comando quando si avvia il servizio.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. Per avviare un'istanza di SQLdiag denominata Instance1, ad esempio, usare la sintassi seguente:For example, to start a SQLdiag instance named Instance1, use the following syntax:

SQLDIAG START /A Instance1  

È inoltre possibile utilizzare il comando net start per avviare il servizio SQLDIAG.You can also use the net start command to start the SQLDIAG service.

Quando SQLdiagviene riavviato, i contenuti della cartella di output vengono sovrascritti.When you restart SQLdiag, it overwrites the contents in the current output folder. Per evitare la sovrascrittura, specificare /N 2 nella riga di comando per rinominare la cartella di output all'avvio dell'utilità.To avoid this, specify /N 2 on the command line to rename the output folder when the utility starts.

La sospensione del servizio dell'utilità SQLdiag non è supportata.Pausing the SQLdiag service is not supported.

Esecuzione di più istanze di SQLdiagRunning Multiple Instances of SQLdiag

È possibile eseguire più istanze di SQLdiag nello stesso computer specificando /A SQLdiag_application_name nella riga di comando.Run multiple instances of SQLdiag on the same computer by specifying /ASQLdiag_application_name on the command line. Ciò consente di raccogliere diversi set di dati diagnostici contemporaneamente dalla stessa istanza di SQL ServerSQL Server.This is useful for collecting different sets of diagnostics simultaneously from the same SQL ServerSQL Server instance. È ad esempio possibile configurare un'istanza denominata di SQLdiag per eseguire in modo continuo una raccolta di dati lightweight.For example, you can configure a named instance of SQLdiag to continuously perform lightweight data collection. Se quindi si verifica un problema specifico relativo a SQL ServerSQL Server, è possibile eseguire l'istanza di SQLdiag predefinita per raccogliere i dati diagnostici relativi a quel problema o per la raccolta di un set di dati diagnostici su richiesta del Servizio Supporto Tecnico Clienti MicrosoftMicrosoft per elaborare una diagnosi relativa al problema.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.

Raccolta dei dati diagnostici dalle istanze di SQL Server del clusterCollecting Diagnostic Data from Clustered SQL Server Instances

L'utilitàSQLdiag supporta la raccolta di dati diagnostici dalle istanze cluster di SQL ServerSQL Server .SQLdiag supports collecting diagnostic data from clustered SQL ServerSQL Server instances. Per raccogliere dati diagnostici da cluster SQL ServerSQL Server istanze, assicurarsi che "." specificato per il nome attributo del <macchina > elemento nella configurazione del file SQLDiag. XML e non si specifica il /G argomento nella riga di comando.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. Per impostazione predefinita, viene specificato "." per l'attributo name nel file di configurazione e l'argomento /G è disabilitato.By default, "." is specified for the name attribute in the configuration file and the /G argument is turned off. Non è in genere necessario modificare il file di configurazione o gli argomenti della riga di comando durante la raccolta di dati da un'istanza cluster di 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.

Se si specifica "." come nome del computer, l'utilità SQLdiag rileva che è in esecuzione in un cluster e contemporaneamente recupera i dati diagnostici da tutte le istanze virtuali di SQL ServerSQL Server installate nel 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. Se si desidera raccogliere dati diagnostici da una sola istanza virtuale di SQL ServerSQL Server che è in esecuzione in un computer, specificare l'istanza virtuale SQL ServerSQL Server per il nome attributo del <macchina > elemento 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.

Nota

Per raccogliere le informazioni di traccia di SQL Server ProfilerSQL Server Profiler dalle istanze cluster di SQL ServerSQL Server, è necessario abilitare le condivisioni amministrative (ADMIN$) nel 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.

Vedere ancheSee Also

Guida di riferimento alle utilità del prompt dei comandi (Motore di database)Command Prompt Utility Reference (Database Engine)