Come utilizzare l'utilità Sqldumper.exe per generare un file di dump in SQL Server

Riepilogo

L'utilità di Sqldumper.exe è incluso in Microsoft SQL Server 2005, Microsoft SQL Server 2008, Microsoft SQL Server 2008 R2 e Microsoft SQL Server 2012. In questo articolo viene descritto come utilizzare l'utilità Sqldumper.exe per generare un file di dump per la segnalazione di Watson o per le attività di debug.

Ulteriori informazioni

È possibile utilizzare l'utilità Sqldumper.exe per generare un file di dump su richiesta per qualsiasi applicazione di Microsoft Windows. Ad esempio, è possibile generare un file di dump per il debug di un problema nell'applicazione quando un computer che esegue SQL Server 2005, Microsoft SQL Server 2008, Microsoft SQL Server 2008 R2 o Microsoft SQL Server 2012 non risponde alle richieste dell'utente. Un file minidump, un file di dump completo o un file di dump filtrata, può essere un file dump.

Tuttavia, è possibile utilizzare l'utilità Sqldumper.exe per il debug di interesse generale. Per ulteriori informazioni sul debug di interesse generale, visitare il seguente sito Web Microsoft:Il processo di SQL Server chiama l'utilità Sqldumper.exe internamente per generare un file dump quando il processo si verifica alcuna eccezione. SQL Server passa dei flag dell'utilità Sqldumper.exe. È possibile utilizzare i flag di traccia per cambiare i flag che SQL Server passa all'utilità nel contesto di un'eccezione o nel contesto di un'asserzione. Questi flag di traccia sono compresi nell'intervallo da 2540 a 2559. È possibile utilizzare questi flag di traccia per generare alcuni tipi di file di dump. Per esempio:
  • Il Flag di traccia 2551: Produce un'immagine della memoria filtrata
  • Il Flag di traccia 2544: Produce un'immagine della memoria completa
  • Il Flag di traccia 2546: Esegue il dump di tutti i thread per SQL Server nel file di dump
  • Il Flag di traccia 8026: SQL Server verrà cancellato un dumptrigger dopo aver generato una volta il dump
Se due o più flag di traccia sono attive, l'opzione che indica il dump della memoria più grande sarà effettiva. Se vengono utilizzati i flag di traccia 2551 e 2544, SQL Server crea un dump completo della memoria.

Come ottenere un identificatore di processo dell'applicazione di Microsoft Windows

Per generare un file dump mediante l'utilità Sqldumper.exe, è necessario che l'identificatore di processo dell'applicazione Windows per il quale si desidera generare un file dump. Per ottenere l'identificatore di processo, attenersi alla seguente procedura:
  1. Premere CTRL + ALT + CANC e quindi fare clic su Task Manager.
  2. Nella finestra di dialogo Task Manager di Windows , fare clic sulla scheda processi .
  3. Scegliere Seleziona colonnedal menu Visualizza .
  4. Nella finestra di dialogo Seleziona colonne , fare clic per selezionare la casella di controllo PID (Identific. processo) e quindi fare clic su OK.
  5. Si noti l'identificatore di processo dell'applicazione Windows per il quale si desidera generare un file dump. Per l'applicazione di SQL Server, si noti l'identificatore di processo del processo di Sqlservr.exe.
  6. Chiudere Gestione attività.
È inoltre possibile ottenere l'identificatore di processo dell'applicazione di SQL Server in esecuzione sul computer utilizzando il file di registro errori di SQL Server. Ad esempio, parte del file di log errori di SQL Server è simile al seguente:

04-2006-18 09:53:03.94 Server di Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86)

OCT 14 2005 00:33:37

Copyright (c) 1988-2005 Microsoft Corporation

Enterprise Edition su Windows NT 5.2 (Build 3790: Service Pack 1)



04-2006-18 09:53:03.94 Server (c) 2005 Microsoft Corporation.

04-2006-18 09:53:03.94 Server tutti i diritti riservati.

ID processo Server Server di 09:53:03.94 2006-04-18 è 3716.

Il numero che viene visualizzato dopo l'ID del processo Server è l'identificatore di processo per il processo di Sqlservr.exe.

Come eseguire l'utilità Sqldumper.exe

Eseguire l'utilità Sqldumper.exe nel contesto della cartella in SQL Server installato in origine l'utilità. Per impostazione predefinita, il percorso di installazione dell'utilità di Sqldumper.exe è la seguente:
SQLServerInstallDrive: \Programmi\Microsoft SQL Server\90\Shared\SQLDumper.exe
Nota: SQLServerInstallDrive è un segnaposto per l'unità in cui è installato SQL Server 2005.

Per generare un file dump mediante l'utilità Sqldumper.exe, attenersi alla seguente procedura:
  1. Aprire la seguente cartella:
    SQLServerInstallDrive: \Programmi\Microsoft SQL Servernumero\Shared
    Nota: In questo percorso di cartella, numero è un segnaposto per uno dei seguenti:
    • Il nome della cartella è 110 per SQL Server 2012.
    • Il nome della cartella è di 100 per SQL Server 2008.
    • Il nome della cartella 90 per SQL Server 2005.

  2. Assicurarsi che il file dbghelp. dll è in questa cartella.
  3. Fare clic su Start, scegliere Esegui, digitare cmd e quindi fare clic su OK.
  4. Al prompt dei comandi, digitare il comando seguente e quindi premere INVIO:
    CD SQLServerInstallDrive: \Programmi\Microsoft SQL Servernumero\Shared
    Nota: In questo percorso di cartella, numero è un segnaposto per uno dei seguenti:
    • Il nome della cartella è 110 per SQL Server 2012.
    • Il nome della cartella è di 100 per SQL Server 2008.
    • Il nome della cartella 90 per SQL Server 2005.
  5. Per generare un tipo specifico di file dump, al prompt dei comandi digitare il comando corrispondente e quindi premere INVIO:
    • File di dump completo
      ProcessID Sqldumper.exe 0 0x01100
    • File di dump ridotto
      ProcessID Sqldumper.exe 0 0x0120
    • File di dump ridotto che include la memoria di riferimento indiretto
      Sqldumper.exe ProcessID 0 0x0120:40
    • File di immagine filtrata
      ProcessID Sqldumper.exe 0 0x8100
    Nota: ProcessID è un segnaposto per l'identificatore di processo dell'applicazione Windows per il quale si desidera generare un file dump.
Se l'utilità di Sqldumper.exe viene eseguito correttamente, l'utilità genera un file di dettagli nella cartella in cui è installata l'utilità.

Il file dump che genera l'utilità di Sqldumper.exe è un modello di nome di file analogo al seguente:
SQLDmprxxxx.mdmp
In questo modello, xxxx è un numero sempre maggiore che è basato su altri file con un nome di file simili nella stessa cartella. Se si dispongono già di file nella cartella che hanno il nome di file del modello specificato, è necessario confrontare la data e l'ora di creazione di file per identificare il file che si desidera.

Ulteriori informazioni e considerazioni

Quando l'utilità Sqldumper.exe genera un file dump per un'applicazione Windows, il file di dettagli potrebbe essere più grande di memoria attualmente utilizzato nell'applicazione Windows. Assicurarsi che sia sufficiente spazio su disco disponibile sull'unità in cui l'utilità Sqldumper.exe scrive il file dump.

È possibile specificare la directory in cui l'utilità Sqldumper.exe per scrivere il file dump. La directory deve esistere già prima di eseguire l'utilità Sqldumper.exe. In caso contrario, l'utilità Sqldumper.exe avrà esito negativo. Non utilizzare un percorso UNC come percorso per il file dump. Di seguito è un esempio di specificare il percorso del file dump del file di dump ridotto:
  1. Fare clic su Start, scegliere Esegui, digitare cmd e quindi fare clic su OK.
  2. Al prompt dei comandi, digitare il comando seguente e quindi premere INVIO:
    CD SQLServerInstallDrive: \Programmi\Microsoft SQL Servernumero\Shared
    Nota: In questo percorso di cartella, numero è un segnaposto per uno dei seguenti:
    • Il nome della cartella è 110 per SQL Server 2012.
    • Il nome della cartella è di 100 per SQL Server 2008.
    • Il nome della cartella 90 per SQL Server 2005.
  3. Digitare il comando seguente al prompt dei comandi e quindi premere INVIO:
    Sqldumper.exe ProcessID 0 0x0120 0 MdumpPath
    Nota: MdumpPath è un segnaposto per la directory in cui si desidera l'utilità Sqldumper.exe per scrivere il file dump. Per impostazione predefinita, il file viene scritto nella cartella corrente.
Se si specifica un file di dump completo o un file di dump filtrato deve essere generato, l'utilità di Sqldumper.exe potrebbe richiedere alcuni minuti per generare il file dump. Il tempo dipende dalle seguenti variabili:
  • La quantità di memoria che sta utilizzando l'utilità Sqldumper.exe
  • La velocità dell'unità in cui l'utilità scrive il file di dump
Durante questo periodo, l'utilità di Sqldumper.exe non elabora i comandi. Si noterà che il server non risponde. Inoltre, può verificarsi un failover del cluster.

Per eseguire l'utilità Sqldumper.exe, è necessario accedere a Windows utilizzando uno dei seguenti metodi:
  • Utilizzare un account membro del gruppo administrators sul computer.
  • Utilizzare lo stesso account utente con cui viene eseguito il servizio SQL Server.
Per l'utilità di Sqldumper.exe per il corretto funzionamento tramite Desktop remoto o servizi Terminal, è necessario avviare Desktop remoto o servizi Terminal in modalità console. Ad esempio, per avviare Desktop remoto in modalità console, fare clic su Start, scegliere Esegui, digitare mstsc /consolee quindi fare clic su OK. Si tenga presente che se il server di destinazione esegue Windows 2000, l'opzione /console viene automaticamente ignorata. È possibile connettersi al server tramite Desktop remoto. Ma si prevede di non utilizzare la sessione della console.
Se si nota che non è stato generato alcun file di dettagli nella cartella corrente dopo aver eseguito l'utilità Sqldumper.exe, rivedere le informazioni che ha generato l'utilità della riga di comando per tentare di determinare la causa dell'errore. Inoltre, i dati vengono registrati nel file SQLDUMPER_ERRORLOG nella directory corrente. Di seguito sono due possibili messaggi di errore e le relative cause.
Messaggio 1
OpenProcess non riuscito 0x57: il parametro non è corretto

Non valido è stato passato all'utilità di Sqldumper.exe ID di processo.
Messaggio 2
Valore non valido per l'id thread - < > parametro messaggio di errore

È stato passato un parametro non valido per l'utilità Sqldumper.exe.

Se viene generato un messaggio di errore analogo a uno dei seguenti, è possibile ignorare questo messaggio:

Tipo sconosciuto di callback durante minidump 6
Tipo sconosciuto di callback durante minidump 7

Cluster di failover e l'utility Sqldumper.exe

In scenari di failover del cluster, la risorsa di SQL Server DLL ora possibile ottenere un file di dump prima che si verifichi il failover. Quando la DLL di risorse di SQL Server determina che una risorsa di SQL Server non è riuscita, la risorsa di SQL Server DLL utilizza l'utilità Sqldumper.exe per ottenere un file di dump del processo di SQL Server. Per assicurarsi che l'utilità di Sqldumper.exe genera correttamente il file dump, è necessario impostare le seguenti tre proprietà come prerequisiti:
  • SqlDumperDumpTimeOut
    Un timeout specificato dall'utente. La risorsa che dll attende che il file dump da completare prima della risorsa DLL interrompe il servizio SQL Server.
  • SqlDumperDumpPath
    La posizione in cui l'utilità Sqldumper.exe genera il file dump.
  • SqlDumperDumpFlags
    Flag che utilizza l'utilità Sqldumper.exe.
Se una qualsiasi delle proprietà non è impostata, l'utilità Sqldumper.exe Impossibile generare il file dump. Un messaggio di avviso verrà registrato nel registro eventi e nel registro cluster ogni volta che la risorsa viene portata in linea.

Per impostare le proprietà di utilità Sqldumper.exe per il failover del cluster, attenersi alla seguente procedura:
  1. Fare clic su Start, scegliere Esegui, digitare cmd e quindi fare clic su OK.
  2. Per ogni proprietà, digitare il comando corrispondente al prompt dei comandi e quindi premere INVIO:
    • La proprietà SqlDumperDumpFlags
      Per impostare la proprietà SqlDumperDumpFlags per un tipo specifico di file dump, al prompt dei comandi digitare il comando corrispondente, quindi premere INVIO:
      • Tutti i file di dump completo thread
        • Istanza predefinita
          cluster resource "SQL Server" /priv SqlDumperDumpFlags = 0x01100
        • Istanza denominata
          cluster resource "SQL Server (INSTANCE1)" /priv SqlDumperDumpFlags = 0x01100
      • Tutti i file di minidump thread
        • Istanza predefinita
          cluster resource "SQL Server" /priv SqlDumperDumpFlags = 0x0120
        • Istanza denominata
          cluster resource "SQL Server (INSTANCE1)" /priv SqlDumperDumpFlags = 0x0120
      • Tutti i file di dump thread filtrati
        • Istanza predefinita
          cluster resource "SQL Server" /priv SqlDumperDumpFlags = 0x8100
        • Istanza denominata
          cluster resource "SQL Server (INSTANCE1)" /priv SqlDumperDumpFlags = 0x8100
    • La proprietà SqlDumperDumpPath
      "SQL Server" /priv SqlDumperDumpPath risorsa cluster = DirectoryPath
      Nota: DirectoryPath è un segnaposto per la directory in cui verrà generato il file di dump e deve essere specificato tra virgolette ("").
    • La proprietà SqlDumperDumpTimeOut
      "SQL Server" /priv SqlDumperDumpTimeOut risorsa cluster = Timeout
      Nota: Timeout è un segnaposto per il timeout in millisecondi (ms).

      Il tempo necessario l'utilità per generare un file di dump di un processo di SQL Server dipende dalla configurazione del computer. Per un computer che dispone di molta memoria, il tempo può essere significativo. Per ottenere una stima del tempo che il processo, utilizzare l'utilità di Sqldumper.exe per generare manualmente un file dump. I valori validi per la proprietà SqlDumperDumpTimeOut sono compresi ms 10000 e MAXDWORD. MAXDWORD rappresenta il valore massimo dell'intervallo del tipo di dati DWORD (4294967295).
Per verificare che siano state attivate le impostazioni, è possibile eseguire il comando seguente:

cluster /priv "SQL Server" risorse"

Per rimuovere le proprietà di utilità Sqldumper.exe per il failover del cluster, attenersi alla seguente procedura:
  1. Fare clic su Start, scegliere Esegui, digitare cmd e quindi fare clic su OK.
  2. Per una proprietà specifica, al prompt dei comandi digitare il comando corrispondente e quindi premere INVIO:
    • La proprietà SqlDumperDumpFlags
      • Istanza predefinita
        cluster resource "SQL Server" /priv:SqlDumperDumpFlags /usedefault
      • Istanza denominata
        cluster resource "SQL Server (INSTANCE1)" /priv:SqlDumperDumpFlags /usedefault
    • La proprietà SqlDumperDumpPath
      • Istanza predefinita
        cluster resource "SQL Server" /priv:SqlDumperDumpPath /usedefault
      • Istanza denominata
        cluster /usedefault /priv:SqlDumperDumpPath di risorse "di SQL Server (INSTANCE1)"
    • La proprietà SqlDumperDumpTimeOut
      • Istanza predefinita
        cluster resource "SQL Server" /priv:SqlDumperDumpTimeOut /usedefault
      • Istanza denominata
        cluster /usedefault /priv:SqlDumperDumpTimeOut di risorse "di SQL Server (INSTANCE1)"
Proprietà

ID articolo: 917825 - Ultima revisione: 30 gen 2017 - Revisione: 1

Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Workgroup, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Workgroup, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Express Edition

Feedback