Condividi tramite


Utilità SQLdiag

SQLdiag è un'utilità di raccolta di dati diagnostici generica che può essere eseguita come applicazione console o come servizio. È possibile utilizzare SQLDiag per raccogliere i log e i file di dati da SQL Server e altri tipi di server, nonché per monitorare i server in un intervallo di tempo oppure risolvere problemi specifici dei server. L'utilità SQLdiag è stata creata per velocizzare e semplificare la raccolta delle informazioni diagnostiche necessarie per il Servizio Supporto Tecnico Clienti Microsoft.

[!NOTA]

A partire da SQL Server 2005 l'utilità SQLdiag è stata modificata in modo significativo. Gli argomenti della riga di comando per questa utilità non sono compatibili con SQL Server 2000. È possibile che questa utilità venga modificata, di conseguenza le applicazioni o gli script che utilizzano gli argomenti della riga di comando o che dipendono dal comportamento dell'utilità stessa potrebbero non funzionare correttamente nelle versioni future.

L'utilità SQLdiag è in grado di raccogliere i tipi di informazioni diagnostiche riportate di seguito:

  • Registri di prestazioni di Windows

  • Registri eventi di Windows

  • Tracce di SQL Server Profiler

  • Informazioni di blocco di SQL Server

  • Informazioni di configurazione di SQL Server

Per specificare i tipi di informazione che si desidera raccogliere tramite l'utilità SQLdiag, modificare il file di configurazione SQLDiag.xml, descritto nella sezione seguente.

Sintassi

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 | via } ]
       [/Q] [/G] [/R] [/U] [/L] [/X] }
     |
     { [START | STOP | STOP_ABORT] }
     |
     { [START | STOP | STOP_ABORT] /A SQLdiag_application_name }

Argomenti

  • /?
    Visualizza informazioni sull'utilizzo.

  • /Iconfiguration_file
    Imposta il file di configurazione utilizzato da SQLdiag. Per impostazione predefinita, /I è impostato su SQLDiag.Xml.

  • /Ooutput_folder_path
    Reindirizza l'output dell'utilità SQLdiag sulla cartella specificata. Se si omette l'opzione /O, l'output dell'utilità SQLdiag viene scritto su una sottocartella denominata SQLDIAG sotto la cartella di avvio di SQLdiag. Se la cartella SQLDIAG non esiste, l'utilità SQLdiag cercherà di crearla.

    [!NOTA]

    La posizione della cartella di output è relativa alla posizione della cartella di supporto che è possibile specificare mediante /P. Per impostare una cartella di output completamente diversa, specificare il percorso completo della directory per /O.

  • /Psupport_folder_path
    Imposta il percorso della cartella di supporto. Per impostazione predefinita, /P viene impostata sulla cartella nella quale risiede il file eseguibile di SQLdiag. 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à utilizza durante la raccolta dei dati diagnostici. Se si utilizza 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à.

    [!NOTA]

    Per impostare la cartella corrente come percorso di supporto, specificare %cd% nella riga di comando come segue:

    SQLDIAG /P %cd%

  • /Noutput_folder_management_option
    Imposta la sovrascrittura o la ridenominazione della cartella di output all'avvio dell'utilità SQLdiag. Opzioni disponibili:

    1 = sovrascrive la cartella di output (impostazione predefinita).

    2 = all'avvio di SQLdiag, rinomina la cartella di output in SQLDIAG_00001, SQLDIAG_00002 e così via. Dopo aver rinominato la cartella di output corrente, SQLdiag scrive l'output nella cartella di output predefinita SQLDIAG.

    [!NOTA]

    Con SQLdiag l'output non viene accodato alla cartella di output corrente al momento dell'avvio. È 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.

  • /Mmachine1 [ machine2machineN] | @machinelistfile
    Esegue l'override del computer specificato nel file di configurazione. Per impostazione predefinita il file di configurazione è SQLDiag.Xml o è impostato con il parametro /I. Quando si specifica più di un computer, separare ogni nome di computer con uno spazio.

    L'utilizzo di @machinelistfile consente di specificare un nome di file di un elenco di computer da archiviare nel file di configurazione.

  • /Cfile_compression_type
    Imposta il tipo di compressione utilizzato per i file nella cartella di output SQLdiag. Opzioni disponibili:

    0 = nessuna compressione (impostazione predefinita)

    1 = compressione NTFS

  • /B [+]start_time
    Specifica la data e l'ora di inizio della raccolta di dati diagnostici nel formato seguente:

    AAAAMMGG_HH:MM:SS

    L'ora viene specificata nel formato 24 ore. Ad esempio, per specificare le 2 del pomeriggio immettere 14:00:00.

    Utilizzare + senza specificare la data, ovvero solo HH:MM:SS, per specificare un'ora in relazione alla data e all'ora correnti. Ad esempio, se si specifica /B +02:00:00, SQLdiag attenderà due ore prima di iniziare a raccogliere informazioni.

    Non inserire spazi tra + e il valore specificato per 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. 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.

    L'utilità SQLdiag utilizza l'ora locale del computer in cui è in esecuzione.

  • /E [+]stop_time
    Specifica la data e l'ora di interruzione della raccolta di dati diagnostici nel formato seguente:

    AAAAMMGG_HH:MM:SS

    L'ora viene specificata nel formato 24 ore. Ad esempio, per specificare le 2 del pomeriggio immettere 14:00:00.

    Utilizzare + senza specificare la data, ovvero solo HH:MM:SS, per specificare un'ora in relazione alla data e all'ora correnti. Se, ad esempio, si specifica un'ora di inizio e un'ora di fine tramite /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 interrotta e chiusa. Se si omette /B, SQLdiag inizia a raccogliere subito i dati diagnostici e termina alla data e all'ora specificate da /E.

    Non inserire spazi tra + e il valore specificato per start_time o end_time.

    L'utilità SQLdiag utilizza l'ora locale del computer in cui è in esecuzione.

  • /A SQLdiag_application_name
    Attiva l'esecuzione di più istanze dell'utilità SQLdiag sulla base della stessa istanza di SQL Server.

    Ogni SQLdiag_application_name identifica una diversa istanza di SQLdiag. Non esiste alcuna relazione tra un'istanza di SQLdiag_application_name e il nome di un'istanza di SQL Server.

    È possibile utilizzare SQLdiag_application_name per avviare o interrompere un'istanza specifica del servizio SQLdiag.

    Ad esempio:

    SQLDIAG START /A SQLdiag_application_name

    È inoltre possibile utilizzarlo con l'opzione /R per registrare un'istanza specifica di SQLdiag come servizio. Ad esempio:

    SQLDIAG /R /ASQLdiag_application_name

    [!NOTA]

    SQLdiag aggiunge automaticamente il prefisso DIAG$ al nome dell'istanza specificato per SQLdiag_application_name. In questo modo viene messo a disposizione un nome di servizio appropriato se si registra SQLdiag come servizio.

  • /T { tcp [ ,port ] | np | lpc | via }
    Consente di connettersi a un'istanza di SQL Server utilizzando il protocollo specificato.

    • tcp [, port]
      Protocollo TCP/IP (Transmission Control Protocol/Internet Protocol). È possibile specificare facoltativamente un numero di porta per la connessione.

    • np
      Named pipe. Per impostazione predefinita, l'istanza predefinita di SQL Server resta in attesa sulla named pipe \\.\pipe\sql\query e \\.\pipe\MSSQL$<instancename>\sql\query per un'istanza denominata. Non è possibile connettersi a un'istanza di SQL Server tramite un nome della pipe alternativo.

    • lpc
      Chiamata di procedura locale. Il protocollo Shared Memory è disponibile se il client si connette a un'istanza di SQL Server nello stesso computer.

    • via
      Protocollo VIA (Virtual Interface Adapter). Questo protocollo deve essere utilizzato per l'hardware VIA. Per informazioni sull'utilizzo di VIA, rivolgersi al fornitore dell'hardware.

    Per ulteriori informazioni sui protocolli, vedere Scelta di un protocollo di rete.

  • /Q
    Esegue l'utilità SQLdiag in modalità non interattiva. /Q disattiva tutti prompt, ad esempio i prompt delle password.

  • /G
    Esegue l'utilità SQLdiag in modalità generica. Se si specifica /G, all'avvio dell'utilità SQLdiag non vengono eseguiti i controlli della connettività di SQL Server, né viene verificata l'appartenenza dell'utente al ruolo predefinito del server sysadmin. L'utilità SQLdiag utilizza invece Windows per determinare se un utente dispone delle autorizzazioni sufficienti per raccogliere i dati diagnostici richiesti.

    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 Server se l'utente non appartiene al gruppo Administrators.

  • /R
    Registra l'utilità SQLdiag come servizio. Gli argomenti della riga di comando specificati per registrare l'utilità SQLdiag come servizio vengono conservati per le esecuzioni future del servizio stesso.

    Se l'utilità SQLdiag viene registrata come servizio, il nome del servizio predefinito è SQLDIAG. È possibile modificare il nome del servizio utilizzando l'argomento /A.

    Utilizzare l'argomento della riga di comando START per avviare il servizio:

    SQLDIAG START

    È inoltre possibile utilizzare il comando net start per avviare il servizio:

    net start SQLDIAG

  • /U
    Annulla la registrazione dell'utilità SQLdiag come servizio.

    Utilizzare l'argomento /A anche se si annulla la registrazione di un'istanza denominata di SQLdiag.

  • /L
    Esegue l'utilità SQLdiag in modalità continua quando si specificano un'ora di inizio e fine rispettivamente mediante gli argomenti /B o /E. L'utilità SQLdiag viene automaticamente riavviata in seguito all'interruzione della raccolta di dati diagnostici a causa di una chiusura pianificata impostata tramite, ad esempio, l'argomento /E o /X.

    [!NOTA]

    SQLdiag ignora l'argomento /L se non si specifica un'ora di inizio e fine mediante gli argomenti della riga di comando /B e /E.

    L'utilizzo dell'argomento /L non implica la definizione della modalità del servizio. Per utilizzare /L per l'esecuzione dell'utilità SQLDiag come servizio, specificare l'argomento nella riga di comando quando si registra il servizio.

  • /X
    Esegue l'utilità SQLdiag in modalità snapshot. L'utilità SQLdiag esegue uno snapshot di tutti i dati diagnostici configurati, quindi viene chiusa automaticamente.

  • START | STOP | STOP_ABORT
    Avvia o interrompe il servizio SQLdiag. STOP_ABORT impone al servizio di arrestarsi al più presto senza portare a termine la raccolta dei dati diagnostici in corso.

    Questi argomenti di controllo del servizio devono essere i primi nella riga di comando quando vengono utilizzati. Ad esempio:

    SQLDIAG START

    L' argomento /A, che specifica un'istanza denominata di SQLdiag, è l'unico che può essere utilizzato con START, STOP o STOP_ABORT per il controllo di un'istanza specifica del servizio SQLdiag. Ad esempio:

    SQLDIAG START /ASQLdiag_application_name

Requisiti di protezione

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 sysadmin di SQL Server. Per impostazione predefinita, l'utilità SQLdiag esegue la connessione a SQL Server tramite l'autenticazione di Windows, ma supporta anche l'autenticazione di SQL Server.

Considerazioni sulle prestazioni

Le prestazioni relative all'esecuzione dell'utilità SQLdiag dipendono dal tipo di dati diagnostici configurati per la raccolta. Se ad esempio l'utilità SQLdiag è stata configurata per raccogliere informazioni di traccia di SQL Server Profiler Profiler, maggiore è il numero di classi degli eventi selezionate per la raccolta delle tracce, maggiore sarà l'impatto sulle prestazioni del server.

L'impatto sulle prestazioni dell'esecuzione dell'utilità SQLDiag è pari circa alla somma dei costi di raccolta dei dati diagnostici configurati separatamente. 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 Profiler. L'impatto dell'utilizzo dell'utilità SQLDiag sulle prestazioni è irrilevante.

Spazio su disco richiesto

Poiché l'utilità SQLdiag è in grado di raccogliere tipi diversi di dati diagnostici, lo spazio libero su disco richiesto per l'esecuzione di SQLdiag può variare. 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.

File di configurazione

All'avvio dell'utilità SQLdiag vengono letti il file di configurazione e gli argomenti della riga di comando specificati. Nel file di configurazione vengono specificati i tipi di dati diagnostici raccolti dall'utilità SQLdiag. Per impostazione predefinita, l'utilità SQLdiag utilizza il file di configurazione SQLDiag.Xml, disponibile a ogni esecuzione nella cartella di avvio dell'utilitàSQLdiag. Il file di configurazione utilizza lo schema XML SQLDiag_schema.xsd estratto dalla directory di avvio dell'utilità dal file eseguibile ad ogni esecuzione di SQLdiag.

Modifica dei file di configurazione

È possibile copiare e modificare il file SQLDiag.Xml per modificare i tipi di dati diagnostici raccolti dall'utilità SQLdiag. Durante la modifica del file di configurazione utilizzare sempre un editor XML in grado di convalidare il file in base al relativo schema XML, ad esempio Management Studio. Non è consigliabile modificare SQLDiag.Xml direttamente. Creare invece una copia del file SQLDiag.Xml e ridenominarlo con un nome file diverso nella stessa cartella. A questo punto, modificare il nuovo file e utilizzare l'argomento /I per passarlo all'utilità SQLdiag.

Modifica del file di configurazione in caso di esecuzione di SQLdiag come servizio

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 utilizzando l'argomento della riga di comando /R. 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.

Cartella di output

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. Per la raccolta di dati diagnostici che comportano un elevato numero di tracce, ad esempio SQL Server Profiler Profiler, verificare che la cartella di output si trovi in un'unità locale dotata di spazio sufficiente per memorizzare l'output di dati diagnostici richiesto.

Quando SQLdiag viene riavviato, i contenuti della cartella di output vengono sovrascritti. Per evitare la sovrascrittura, specificare /N 2 nella riga di comando.

Processo di raccolta dei dati

Quando viene avviata, l'utilità SQLdiag esegue i controlli di inizializzazione necessari per raccogliere i dati diagnostici specificati nel file SQLDiag.Xml. Questo processo potrebbe richiedere alcuni secondi. 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 interromperla. Se l'utilità SQLdiag viene eseguita come servizio, un messaggio simile viene scritto nel registro eventi di Windows.

In caso di utilizzo dell'utilità SQLdiag per diagnosticare un problema che è possibile riprodurre, attendere la visualizzazione di questo messaggio prima di riprodurre il problema nel server.

L'utilità SQLdiag raccoglie la maggior parte dei dati diagnostici in parallelo. Tutti i dati diagnostici vengono raccolti mediante la connessione a strumenti, ad esempio l'utilità sqlcmd di SQL Server oppure il processore dei comandi di Windows, tranne quando le informazioni vengono raccolte dai registri di prestazioni e dai registri eventi di Windows. L'utilità SQLdiag utilizza 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. Durante il processo di raccolta l'utilità SQLDiag instrada l'output di ogni dato diagnostico alla cartella di output.

Interruzione della raccolta di dati

Dopo l'inizio della raccolta di dati diagnostici, l'utilità SQLdiag continua a raccogliere informazioni finché non viene interrotta manualmente oppure in base all'ora di interruzione specificata. Per configurare l'interruzione dell'esecuzione dell'utilità SQLdiag a un'ora specifica, utilizzare l'argomento /E, che consente di specificare l'ora di interruzione desiderata, oppure l'argomento /X, che imposta l'esecuzione dell'utilità SQLdiag in modalità snapshot.

Quando viene interrotta, l'utilità SQLdiag interrompe tutti i processi di diagnostica avviati. Vengono ad esempio interrotti la raccolta delle tracce di SQL Server Profiler , gli script Transact-SQL in esecuzione e qualsiasi processo secondario generato durante la raccolta dei dati. Quando la raccolta di dati diagnostici è completata, l'utilità SQLdiag viene chiusa.

[!NOTA]

La sospensione del servizio dell'utilità SQLdiag non è supportata. Se si cerca di sospendere il servizio SQLdiag, l'arresto si verifica al termine della raccolta dei dati diagnostici in corso al momento della sospensione. Se si riavvia l'utilità SQLdiag dopo averla arrestata, l'applicazione viene riavviata e sovrascrive la cartella di output. Per evitare la sovrascrittura della cartella di output, specificare /N 2 nella riga di comando.

Per interrompere l'esecuzione dell'utilità SQLdiag come applicazione console

Se l'utilità SQLdiag è eseguita come applicazione console, premere CTRL+C nella finestra della console in cui l'utilità SQLdiag è in esecuzione per interromperla. 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.

Premere Ctrl+C due volte per terminare tutti i processi figlio di raccolta dei dati diagnostici e terminare l'applicazione immediatamente.

Per interrompere l'esecuzione dell'utilità SQLdiag come servizio

Se si esegue l'utilità SQLdiag come servizio, eseguire SQLDiag STOP nella cartella di avvio di SQLdiag per arrestarlo.

Se si eseguono più istanze di SQLdiag nello stesso computer, è inoltre possibile passare il nome dell'istanza di SQLdiag nella riga di comando quando si arresta il servizio. Per arrestare un'istanza di SQLdiag denominata Instance1, ad esempio, utilizzare la sintassi seguente:

SQLDIAG STOP /A Instance1

[!NOTA]

/A è il solo argomento della riga di comando che può essere utilizzato con START, STOP o 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. I verbi di controllo del servizio devono essere il primo argomento nella riga di comando quando vengono utilizzati.

Per arrestare il servizio al più presto, eseguire SQLDIAG STOP_ABORT nella cartella di avvio dell'utilità. Questo comando annulla tutte le raccolte di dati diagnostici in corso senza attenderne il completamento.

[!NOTA]

Utilizzare SQLDiag STOP o SQLDIAG STOP_ABORT per arrestare il servizio SQLdiag. Non utilizzare la console dei servizi Windows per interrompere SQLdiag o gli altri servizi di SQL Server.

Avvio e interruzione automatici dell'utilità SQLdiag

Per avviare e interrompere automaticamente la raccolta di dati diagnostici a un'ora specificata, utilizzare gli argomenti /Bstart_time e /Estop_time nel formato 24 ore. 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 interrompa automaticamente alle 03:00:00. Utilizzare gli argomenti /B e /E per specificare l'ora di inizio e di fine. Utilizzare il formato 24 ore per specificare la data e l'ora di inizio e fine corrette nel formato AAAAMMGG_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 interrotta e chiusa.

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

Se si specifica un valore relativo per l'argomento start_time, l'utilità SQLdiag viene avviata a un'ora relativa rispetto alla data e all'ora correnti. Se si specifica un valore relativo per l'argomento end_time, l'utilità SQLdiag viene interrotta a un'ora relativa rispetto al valore specificato per l'argomento 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.

Ciò ha implicazioni molto importanti sulle date di inizio e fine selezionate. Si consideri l'esempio descritto di seguito.

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. 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 tramite il prefisso +) e continua fino alle 08:30 del giorno successivo.

Interruzione e riavvio di SQLdiag per la raccolta giornaliera di dati diagnostici

Per raccogliere un set specifico di dati diagnostici su base giornaliera senza dover avviare e interrompere manualmente l'utilità SQLdiag, utilizzare l'argomento /L. L'argomento /L consente di impostare l'esecuzione continua dell'utilità SQLdiag grazie all'impostazione del riavvio automatico dell'utilità dopo un'interruzione pianificata. Se si specifica l'argomento /L e l'utilità SQLdiag viene interrotta perché ha raggiunto l'ora di fine specificata dall'argomento /E oppure perché viene eseguita in modalità snapshot specificata mediante l'argomento /X, l'utilità SQLDiag non viene chiusa, bensì riavviata.

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.

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.

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

Esecuzione dell'utilità SQLdiag come servizio

Se si desidera utilizzare 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.

Per registrare l'utilità SQLDiag in modo che venga eseguita come servizio

È possibile registrare l'utilità SQLdiag in modo che venga eseguita come servizio specificando l'argomento /R nella riga di comando. L'utilità SQLdiag viene registrata in modo che venga eseguita come servizio. Il nome del servizio dell'utilità SQLdiag è 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.

Per modificare il nome del servizio SQLDIAG predefinito, utilizzare l'argomento della riga di comando /A per specificare un altro nome. SQLdiag aggiunge automaticamente il prefisso DIAG$ a qualsiasi nome dell'istanza di SQLdiag specificato mediante /A per creare nomi di servizio appropriati.

Per annullare la registrazione del servizio SQLDIAG

Per annullare la registrazione del servizio, specificare l'argomento /U. L'annullamento della registrazione dell'utilità SQLdiag come servizio comporta l'eliminazione anche delle chiavi del Registro di sistema di Windows.

Per avviare o riavviare il servizio SQLDIAG

Per avviare o riavviare il servizio SQLDIAG, eseguire SQLDiag START dalla riga di comando.

Se si eseguono più istanze di SQLdiag utilizzando l'argomento /A, è inoltre possibile passare il nome dell'istanza di SQLdiag nella riga di comando quando si avvia il servizio. Per avviare un'istanza di SQLdiag denominata Instance1, ad esempio, utilizzare la sintassi seguente:

SQLDIAG START /A Instance1

È inoltre possibile utilizzare il comando net start per avviare il servizio SQLDIAG.

Quando SQLdiag viene riavviato, i contenuti della cartella di output vengono sovrascritti. Per evitare la sovrascrittura, specificare /N 2 nella riga di comando per rinominare la cartella di output all'avvio dell'utilità.

La sospensione del servizio dell'utilità SQLdiag non è supportata.

Esecuzione di più istanze di SQLdiag

È possibile eseguire più istanze di SQLdiag nello stesso computer specificando /ASQLdiag_application_name nella riga di comando. Ciò consente di raccogliere diversi set di dati diagnostici contemporaneamente dalla stessa istanza di SQL Server. È ad esempio possibile configurare un'istanza denominata di SQLdiag per eseguire in modo continuo una raccolta di dati lightweight. Se pertanto si verifica un problema specifico relativo a SQL 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 Microsoft per elaborare una diagnosi relativa al problema.

Raccolta dei dati diagnostici dalle istanze di SQL Server del cluster

L'utilità SQLdiag supporta la raccolta di dati diagnostici dalle istanze cluster di SQL Server. Per raccogliere dati diagnostici dalle istanze cluster di SQL Server, verificare di aver specificato "." per l'attributo name dell'elemento <Machine> nel file di configurazione SQLDiag.Xml e di non aver specificato l'argomento /G nella riga di comando. Per impostazione predefinita, viene specificato "." per l'attributo name nel file di configurazione e l'argomento /G è disattivato. 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 Server.

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 Server installate nel cluster. Se si desidera raccogliere dati diagnostici da una sola istanza virtuale di SQL Server in un computer, specificare l'istanza virtuale di SQL Server per l'attributo name dell'elemento <Machine> nel file SQLDiag.Xml.

[!NOTA]

Per raccogliere le informazioni di traccia di SQL Server Profiler dalle istanze cluster di SQL Server, è necessario abilitare le condivisioni amministrative (ADMIN$) nel cluster.

Vedere anche

Concetti