SQLdiag (Hilfsprogramm)

Das Hilfsprogramm SQLdiag listet allgemeine Diagnoseinformationen auf und kann als Konsolenanwendung oder als Dienst ausgeführt werden. Mithilfe von SQLdiag können Sie Protokolle und Datendateien von SQL Server und anderen Servertypen sammeln. Dies kann hilfreich sein, um Server für eine gewisse Zeit zu überwachen oder bestimmte Serverprobleme zu behandeln. SQLdiag dient dazu, das Sammeln von Diagnoseinformationen für Microsoft Support Services zu beschleunigen und zu vereinfachen.

HinweisHinweis

In SQL Server 2005 wurde das Hilfsprogramm SQLdiag deutlich verändert. Die Befehlszeilenargumente für dieses Hilfsprogramm sind nicht mit SQL Server 2000 kompatibel. Dieses Hilfsprogramm kann weiter geändert werden, und es besteht die Möglichkeit, dass Anwendungen oder Skripts, die auf den Befehlszeilenargumenten und dem entsprechenden Verhalten dieses Hilfsprogramms aufbauen, in zukünftigen Versionen nicht ordnungsgemäß ausgeführt werden.

Mit SQLdiag können die folgenden Arten von Diagnoseinformationen gesammelt werden:

  • Windows-Leistungsprotokolle

  • Windows-Ereignisprotokolle

  • SQL Server Profiler-Ablaufverfolgungen

  • SQL Server-Blockierungsinformationen

  • SQL Server-Konfigurationsinformationen

Sie können angeben, welche Informationen SQLdiag sammeln soll, indem Sie die Konfigurationsdatei SQLDiag.xml bearbeiten. Dies wird im nächsten Abschnitt weiter beschrieben.

Syntax

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 }

Argumente

  • /?
    Zeigt Informationen zur Verwendung an.

  • /Iconfiguration_file
    Legt die Konfigurationsdatei fest, die SQLdiag verwenden soll. Standardmäßig wird mit /I die Datei SQLDiag.Xml festgelegt.

  • /Ooutput_folder_path
    Leitet die Ausgabe von SQLdiag in den angegebenen Ordner um. Wenn die Option /O nicht angegeben wird, wird die Ausgabe von SQLdiag in den Unterordner SQLDIAG unterhalb des Startordners von SQLdiag geschrieben. Wenn der Ordner SQLDIAG nicht vorhanden ist, versucht SQLdiag, ihn zu erstellen.

    HinweisHinweis

    Der Speicherort des Ausgabeordners ist relativ zum Speicherort des Unterstützungsordners, der mit /P angegeben werden kann. Geben Sie den vollständigen Verzeichnispfad für /O an, um einen gänzlich anderen Speicherort für den Ausgabeordner festzulegen.

  • /Psupport_folder_path
    Legt den Pfad für den Unterstützungsordner fest. Standardmäßig wird für /P der Ordner festgelegt, in dem sich die ausführbaren Dateien von SQLdiag befinden. Der Unterstützungsordner enthält SQLdiag-Unterstützungsdateien, wie die XML-Konfigurationsdatei, Transact-SQL-Skripts und andere Dateien, die das Hilfsprogramm zum Auflisten von Diagnoseinformationen verwendet. Wenn Sie mithilfe dieser Option einen anderen Pfad für die Unterstützungsdateien angeben, kopiert SQLdiag automatisch die erforderlichen Unterstützungsdateien in den angegebenen Ordner, sofern sie noch nicht vorhanden sind.

    HinweisHinweis

    Soll der aktuelle Ordner als Unterstützungspfad festgelegt werden, geben Sie %cd% folgendermaßen in der Befehlszeile an:

    SQLDIAG /P %cd%

  • /Noutput_folder_management_option
    Legt fest, ob SQLdiag den Ausgabeordner beim Starten überschreibt oder umbenennt. Verfügbare Optionen:

    1 = Überschreibt den Ausgabeordner (Standardeinstellung)

    2 = Beim Starten von SQLdiag wird der Ausgabeordner in SQLDIAG_00001, SQLDIAG_00002 usw. umbenannt. Nachdem der aktuelle Ausgabeordner umbenannt wurde, schreibt SQLdiag die Ausgabe in den Standardausgabeordner SQLDIAG.

    HinweisHinweis

    SQLdiag fügt beim Starten die Ausgabe nicht an den aktuellen Ausgabeordner an. Das Programm kann nur den Standardausgabeordner überschreiben (Option 1) oder den Ordner umbenennen (Option 2) und dann die Ausgabe in den neuen Standardausgabeordner namens SQLDIAG schreiben.

  • /Mmachine1 [ machine2machineN] | @machinelistfile
    Überschreibt die in der Konfigurationsdatei angegebenen Computer. Standardmäßig ist die Konfigurationsdatei SQLDiag.Xml oder wird mit dem /I-Parameter festgelegt. Wenn Sie mehr als einen Computer angeben möchten, verwenden Sie Leerzeichen zum Trennen der Computernamen.

    Durch Verwenden von @machinelistfile wird ein Computerlistendateiname angegeben, der in der Konfigurationsdatei gespeichert werden sollte.

  • /Cfile_compression_type
    Legt den Typ der Dateikompression fest, die für die Dateien im Ausgabeordner von SQLdiag verwendet wird. Verfügbare Optionen:

    0 = keine Komprimierung (Standardeinstellung)

    1 = NTFS-Komprimierung

  • /B [+]start_time
    Gibt das Datum und die Uhrzeit des Zeitpunkts, an dem die Sammlung von Diagnoseinformationen gestartet werden soll, im folgenden Format an:

    YYYYMMDD_HH:MM:SS

    Die Uhrzeit wird in 24-Stunden-Notation angegeben. So muss 2:00 Uhr mittags beispielsweise als 14:00:00 angegeben werden.

    Verwenden Sie + ohne Datumsangabe (also nur HH:MM:SS), um eine Uhrzeit relativ zum aktuellen Datum und zur aktuellen Uhrzeit anzugeben. Wenn Sie beispielsweise /B +02:00:00 angeben, wartet SQLdiag 2 Stunden, bevor die Sammlung von Informationen gestartet wird.

    Fügen Sie kein Leerzeichen zwischen + und dem angegebenen start_time-Wert ein.

    Wenn Sie eine Startzeit angeben, die in der Vergangenheit liegt, erzwingt SQLdiag eine Änderung des Startdatums, sodass Startdatum und -zeit in der Zukunft liegen. Wenn Sie beispielsweise /B 01:00:00 angeben und es schon 08:00:00 Uhr ist, ändert SQLdiag das Startdatum und legt den nächsten Tag als Startdatum fest.

    Beachten Sie, dass SQLdiag die lokale Zeit auf dem Computer verwendet, auf dem das Hilfsprogramm ausgeführt wird.

  • /E [+]stop_time
    Gibt das Datum und die Uhrzeit des Zeitpunkts, an dem die Sammlung von Diagnoseinformationen beendet werden soll, im folgenden Format an:

    YYYYMMDD_HH:MM:SS

    Die Uhrzeit wird in 24-Stunden-Notation angegeben. So muss 2:00 Uhr mittags beispielsweise als 14:00:00 angegeben werden.

    Verwenden Sie + ohne Datumsangabe (also nur HH:MM:SS), um eine Uhrzeit relativ zum aktuellen Datum und zur aktuellen Uhrzeit anzugeben. Wenn Sie beispielsweise /B +02:00:00 /E +03:00:00 angeben, um eine Start- und eine Beendigungszeit festzulegen, wartet SQLdiag 2 Stunden, bevor die Sammlung von Informationen gestartet wird. Daraufhin werden 3 Stunden lang Informationen gesammelt, bevor der Vorgang endet und das Hilfsprogramm beendet wird. Wenn /B nicht angegeben wird, beginnt SQLdiag sofort mit dem Sammeln von Diagnoseinformationen und beendet den Vorgang an dem Datum und der Uhrzeit, das bzw. die durch /E angegeben wurde.

    Fügen Sie kein Leerzeichen zwischen + und dem angegebenen Wert für start_time oder end_time ein.

    Beachten Sie, dass SQLdiag die lokale Zeit auf dem Computer verwendet, auf dem das Hilfsprogramm ausgeführt wird.

  • /A SQLdiag_application_name
    Ermöglicht das Ausführen mehrerer Instanzen des Hilfsprogramms SQLdiag für dieselbe Instanz von SQL Server.

    Jeder SQLdiag_application_name-Parameter kennzeichnet eine andere Instanz von SQLdiag. Zwischen einer Instanz von SQLdiag_application_name und einem Instanznamen von SQL Server besteht keine Beziehung.

    SQLdiag_application_name kann zum Starten oder Beenden einer bestimmten Instanz des SQLdiag-Diensts verwendet werden.

    Beispiel:

    SQLDIAG START /A SQLdiag_application_name

    Das Argument kann zusammen mit der Option /R auch zum Registrieren einer bestimmten Instanz von SQLdiag als Dienst verwendet werden. Beispiel:

    SQLDIAG /R /ASQLdiag_application_name

    HinweisHinweis

    SQLdiag setzt vor den für SQLdiag_application_name angegebenen Instanznamen automatisch das Präfix DIAG$. Hierdurch kann beim Registrieren von SQLdiag als Dienst ein aussagefähiger Dienstname bereitgestellt werden.

  • /T { tcp [ ,port ] | np | lpc | via }
    Stellt eine Verbindung zu einer Instanz von SQL Server unter Verwendung des angegebenen Protokolls her.

    • tcp [, port]
      Transmission Control Protocol/Internet Protocol (TCP/IP). Sie können optional eine Portnummer für die Verbindung angeben.

    • np
      Named Pipes. Standardmäßig überwacht die Standardinstanz von SQL Server die Named Pipe \\.\pipe\sql\query und \\.\pipe\MSSQL$<instancename>\sql\query auf eine benannte Instanz. Sie können keine Verbindung mit einer Instanz von SQL Server unter Verwendung eines alternativen Pipenamens herstellen.

    • lpc
      Lokaler Prozeduraufruf. Dieses Shared Memory-Protokoll ist verfügbar, falls durch den Client eine Verbindung mit SQL Server auf demselben Computer hergestellt wird.

    • via
      Virtual Interface Adapter-Protokoll. Verwenden Sie dies für VIA-Hardware. Weitere Informationen zum Verwenden von VIA erhalten Sie beim Hardwarehersteller.

      HinweisHinweis

      Das VIA-Protokoll ist veraltet. Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird.

    Weitere Informationen zu Protokollen finden Sie unter Auswählen eines Netzwerkprotokolls.

  • /Q
    Führt SQLdiag im stillen Modus aus. /Q unterdrückt alle Aufforderungen, z. B. Aufforderungen zur Angabe eines Kennworts.

  • /G
    Führt SQLdiag im generischen Modus aus. Wenn /G angegeben wird, wird beim Starten von SQLdiag weder eine SQL Server-Konnektivitätsprüfung erzwungen, noch wird überprüft, ob der Benutzer ein Mitglied der festen Serverrolle sysadmin ist. Stattdessen orientiert sich SQLdiag an Windows, um zu bestimmen, ob ein Benutzer die erforderlichen Rechte zum Sammeln der angeforderten Diagnoseinformationen besitzt.

    Wenn /G nicht angegeben wird, führt SQLdiag eine Überprüfung durch, um zu bestimmen, ob der Benutzer ein Mitglied der Windows-Gruppe Administratoren ist. Gehört der Benutzer der Gruppe Administratoren nicht an, werden keine SQL Server-Diagnoseinformationen gesammelt.

  • /R
    Registriert SQLdiag als Dienst. Alle Befehlszeilenargumente, die angegeben werden, wenn Sie SQLdiag als Dienst registrieren, werden für die zukünftige Ausführung des Diensts beibehalten.

    Wenn SQLdiag als Dienst registriert wird, lautet der Standarddienstname SQLDIAG. Sie können den Dienstnamen mithilfe des /A-Arguments ändern.

    Starten Sie den Dienst mit dem Befehlszeilenargument START:

    SQLDIAG START

    Sie können auch den Befehl net start verwenden, um den Dienst zu starten.

    net start SQLDIAG

  • /U
    Hebt die Registrierung von SQLdiag als Dienst auf.

    Verwenden Sie das /A-Argument auch zum Aufheben der Registrierung einer benannten Instanz von SQLdiag.

  • /L
    Führt SQLdiag im fortlaufenden Modus aus, wenn mit den Argumenten /B oder /E auch eine Startzeit bzw. Beendigungszeit angegeben wird. SQLdiag wird automatisch neu gestartet, nachdem die Sammlung von Diagnoseinformationen aufgrund eines geplanten Herunterfahrens beendet wurde. Dies ist beispielsweise beim Verwenden des Arguments /E oder /X der Fall.

    HinweisHinweis

    SQLdiag ignoriert das /L-Argument, wenn mit den Befehlszeilenargumenten /B und /E keine Startzeit bzw. Beendigungszeit angegeben wird.

    Das Verwenden von /L schließt den Dienstmodus nicht automatisch ein. Wenn Sie /L beim Ausführen von SQLdiag als Dienst verwenden möchten, müssen Sie die Option in der Befehlszeile angeben, wenn Sie den Dienst registrieren.

  • /X
    Führt SQLdiag im Momentaufnahmemodus aus. SQLdiag erstellt eine Momentaufnahme aller konfigurierten Diagnosesammlungen und wird dann automatisch heruntergefahren.

  • START | STOP | STOP_ABORT
    Startet oder beendet den SQLdiag-Dienst. STOP_ABORT zwingt den Dienst, so schnell wie möglich herunterzufahren, ohne die aktuell durchgeführte Sammlung von Diagnoseinformationen abzuschließen.

    Wenn diese Dienstkontrollargumente verwendet werden, müssen sie als erstes Argument in der Befehlszeile angegeben werden. Beispiel:

    SQLDIAG START

    Nur das /A-Argument, das eine benannte Instanz von SQLdiag angibt, kann zusammen mit START, STOP oder STOP_ABORT verwendet werden, um eine bestimmte Instanz des SQLdiag-Diensts zu steuern. Beispiel:

    SQLDIAG START /ASQLdiag_application_name

Sicherheitsanforderungen

Sofern SQLdiag nicht im generischen Modus (durch Angeben des Befehlszeilenarguments /G) ausgeführt wird, muss der Benutzer, der SQLdiag ausführt, Mitglied der Windows-Gruppe Administratoren und der festen Serverrolle sysadmin von SQL Server sein. Standardmäßig verwendet SQLdiag die Windows-Authentifizierung für die Verbindung mit SQL Server; die SQL Server-Authentifizierung wird jedoch ebenfalls unterstützt.

Leistungsaspekte

Inwiefern sich die Ausführung von SQLdiag auf die Leistung auswirkt, hängt von der Art der Diagnosedaten ab, deren Sammlung konfiguriert wurde. Wenn Sie SQLdiag z. B. so konfiguriert haben, dass SQL Server Profiler-Ablaufverfolgungsdaten gesammelt werden, wirkt sich dies umso stärker auf die Serverleistung aus, je mehr Ereignisklassen Sie für die Ablaufverfolgung ausgewählt haben.

Die Leistungseinbußen, die sich durch das Ausführen von SQLdiag ergeben, entsprechen ungefähr der Summe der Kosten, die sich durch die getrennte Sammlung der konfigurierten Diagnosedaten ergeben. So entstehen z. B. durch die Sammlung von Ablaufverfolgungsdaten mithilfe von SQLdiag dieselben Leistungskosten wie durch die Sammlung mit SQL Server Profiler. Die Leistungseinbußen bei Verwendung von SQLdiag sind unerheblich.

Erforderlicher Speicherplatz

Da SQLdiag verschiedene Arten von Diagnoseinformationen sammeln kann, variiert auch der freie Speicherplatz, der für das Ausführen von SQLdiag erforderlich ist. Die Menge der gesammelten Diagnoseinformationen hängt von der Eigenart und dem Umfang der Arbeitsauslastung ab, die der Server verarbeitet, und kann von einigen Megabytes bis hin zu vielen Gigabytes reichen.

Konfigurationsdateien

Beim Start liest SQLdiag die Konfigurationsdatei und die angegebenen Befehlszeilenargumente. In der Konfigurationsdatei geben Sie die Art der Diagnoseinformationen, die mit SQLdiag gesammelt werden. Standardmäßig verwendet SQLdiag die Konfigurationsdatei SQLDiag.Xml, die sich im Startordner des Hilfsprogramms SQLdiag befindet und bei jeder Ausführung des Tools extrahiert wird. Die Konfigurationsdatei verwendet das XML-Schema, SQLDiag_schema.xsd, das ebenfalls bei jedem Ausführen von SQLdiag aus der ausführbaren Datei in das Startverzeichnis des Hilfsprogramms extrahiert wird.

Bearbeiten der Konfigurationsdateien

Sie können SQLDiag.Xml kopieren und bearbeiten, um die Art der von SQLdiag gesammelten Diagnosedaten zu ändern. Bearbeiten Sie die Konfigurationsdatei immer mit einem XML-Editor, der die Konfigurationsdatei anhand des XML-Schemas überprüfen kann (z. B. Management Studio). SQLDiag.Xml sollte nicht direkt bearbeitet werden. Erstellen Sie stattdessen eine Kopie von SQLDiag.Xml, und weisen Sie der Datei in demselben Ordner einen neuen Namen zu. Bearbeiten Sie dann die neue Datei, und verwenden Sie das Argument /I, um sie an SQLdiag zu übergeben.

Bearbeiten der Konfigurationsdatei, wenn SQLdiag als Dienst ausgeführt wird

Wenn Sie SQLdiag bereits als Dienst ausgeführt haben und die Konfigurationsdatei nun bearbeiten müssen, müssen Sie die Registrierung des SQLDIAG-Diensts aufheben, indem Sie das Befehlszeilenargument /U angeben und den Dienst anschließend mithilfe des Befehlzeilenarguments /R erneut registrieren. Durch das Aufheben der Registrierung und die erneute Registrierung des Diensts werden alle Konfigurationsinformationen entfernt, die in der Windows-Registrierung zwischengespeichert waren.

Ausgabeordner

Wenn Sie keinen Ausgabeordner mithilfe von /O angeben, erstellt SQLdiag den Unterordner SQLDIAG unterhalb des Startordners von SQLdiag. Beim Sammeln von Diagnoseinformationen, die große Mengen an Ablaufverfolgungsdaten einschließen, z. B. mit SQL Server Profiler, müssen Sie sicherstellen, dass sich der Ausgabeordner auf einem lokalen Laufwerk befindet, das über ausreichend Speicherplatz zum Speichern der angeforderten Diagnoseausgabe verfügt.

Bei einem Neustart von SQLdiag wird der Inhalt des Ausgabeordners überschrieben. Geben Sie /N 2 in der Befehlszeile an, um dies zu vermeiden.

Datensammlung

Beim Starten von SQLdiag werden die Initialisierungsprüfungen ausgeführt, die notwendig sind, um die in SQLDiag.Xml angegebenen Diagnosedaten zu sammeln. Dieser Vorgang kann mehrere Sekunden dauern. Wenn das Hilfsprogramm als Konsolenanwendung ausgeführt wird, wird eine Meldung angezeigt, sobald SQLdiag mit der Sammlung von Diagnosedaten begonnen hat. Diese Meldung informiert Sie darüber, dass die Sammlung von Daten mithilfe von SQLdiag gestartet wurde dass Sie diesen Vorgang durch Drücken von STRG+C beenden können. Wenn SQLdiag als Dienst ausgeführt wird, wird eine vergleichbare Meldung in das Windows-Ereignisprotokoll geschrieben.

Wenn Sie SQLdiag zum Diagnostizieren eines reproduzierbaren Problems verwenden, sollten Sie warten, bis diese Meldung angezeigt wird, bevor Sie das Problem auf dem Server reproduzieren.

SQLdiag sammelt die meisten Diagnosedaten parallel. Alle Diagnoseinformationen werden gesammelt, indem Verbindungen mit Tools hergestellt werden, z. B. dem SQL Server-Hilfsprogramm sqlcmd oder dem Windows-Befehlsprozessor, es sei denn, die Informationen werden aus Windows-Leistungs- und Ereignisprotokollen gesammelt. SQLdiag verwendet einen Arbeitsthread je Computer, um die Sammlung der Diagnosedaten mithilfe dieser anderen Tools zu überwachen; hierbei wird oftmals gleichzeitig auf die Beendigung der Ausführung mehrerer Tools gewartet. Während des Sammelns leitet SQLdiag die Ausgabe jeder Diagnose an den Ausgabeordner weiter.

Beenden der Datensammlung

Nachdem SQLdiag mit dem Sammeln von Diagnosedaten begonnen hat, wird dieser Vorgang fortgesetzt, bis Sie ihn beenden oder er konfigurationsgemäß zu einer bestimmten Zeit beendet wird. Sie können SQLdiag so konfigurieren, dass die Datensammlung zu einem bestimmten Zeitpunkt beendet wird, indem Sie /E verwenden, um eine bestimmte Beendigungszeit anzugeben, oder /X angeben, um SQLdiag im Momentaufnahmemodus auszuführen.

Wenn SQLdiag beendet wird, werden alle gestarteten Diagnosen beendet. So werden beispielsweise SQL Server Profiler-Ablaufverfolgungen, die gesammelt wurden, und das Ausführen von Transact-SQL-Skripts beendet. Weiterhin werden alle Unterprozesse beendet, die während der Datensammlung erzeugt wurden. Nachdem die Sammlung von Diagnosedaten abgeschlossen ist, wird SQLdiag beendet.

HinweisHinweis

Das Anhalten des SQLdiag-Diensts wird nicht unterstützt. Wenn Sie versuchen, den SQLdiag-Dienst anzuhalten, wird der Dienst nach Abschluss der Sammlung von Diagnoseinformationen beendet, die beim Anhalten des Diensts gerade durchgeführt wurde. Wenn Sie SQLdiag nach Beendigung neu starten, wird beim Starten der Anwendung der Inhalt des Ausgabeordners überschrieben. Soll der Ausgabeordner nicht überschrieben werden, müssen Sie /N 2 in der Befehlszeile angeben.

So beenden Sie SQLdiag, wenn das Hilfsprogramm als Konsolenanwendung ausgeführt wird

Wenn Sie SQLdiag als Konsolenanwendung ausführen, können Sie das Ausführen beenden, indem Sie im Konsolenfenster, in dem SQLdiag ausgeführt wird, STRG+C drücken. Nach dem Drücken von STRG+C wird eine Meldung im Konsolenfenster angezeigt, die Sie darüber informiert, dass die Datensammlung durch SQLDiag beendet wird und Sie warten sollten, bis der Prozess heruntergefahren wird, was einige Minuten in Anspruch nehmen kann.

Drücken Sie STRG+C zweimal, um alle untergeordneten Diagnoseprozesse zu beenden und die Anwendung sofort zu beenden.

So beenden Sie SQLdiag, wenn das Hilfsprogramm als Dienst ausgeführt wird

Wenn Sie SQLdiag als Dienst ausführen, führen Sie SQLDiag STOP im Startordner von SQLdiag aus, um das Programm zu beenden.

Wenn Sie mehrere Instanzen von SQLdiag auf demselben Computer ausführen, können Sie beim Beenden des Diensts auch den Namen der jeweiligen Instanz von SQLdiag an die Befehlszeile übergeben. Verwenden Sie die folgende Syntax, um z. B. eine Instanz von SQLdiag mit dem Namen Instance1 zu beenden:

SQLDIAG STOP /A Instance1
HinweisHinweis

/A ist das einzige Befehlszeilenargument, das mit START, STOP oder STOP_ABORT verwendet werden kann. Wenn Sie eine benannte Instanz von SQLdiag mit einem der Dienstkontrollverben angeben müssen, müssen Sie /A wie im vorherigen Syntaxbeispiel nach dem Kontrollverb in der Befehlszeile angeben. Werden Kontrollverben verwendet, müssen diese als erstes Argument in der Befehlszeile angegeben werden.

Soll der Dienst so schnell wie möglich beendet werden, führen Sie SQLDIAG STOP_ABORT im Startordner des Hilfsprogramms aus. Mit diesem Befehl werden alle aktuell ausgeführten Sammlungen von Diagnoseinformationen abgebrochen, ohne auf ihre Beendigung zu warten.

HinweisHinweis

Verwenden Sie SQLDiag STOP oder SQLDIAG STOP_ABORT, um den SQLdiag-Dienst zu beenden. Verwenden Sie die zum Beenden von SQLdiag oder anderen SQL Server-Diensten nicht die Windows-Dienstekonsole.

Automatisches Starten und Beenden von SQLdiag

Wenn Sie die Sammlung von Diagnosedaten zu einem bestimmten Zeitpunkt automatisch starten und beenden möchten, können Sie die Argumente /Bstart_time und /Estop_time (die Angabe erfolgt in 24-Stunden-Notation) verwenden. Wenn Sie beispielsweise ein Problem behandeln möchten, das immer gegen ca. 02:00:00 Uhr auftritt, können Sie SQLdiag so konfigurieren, dass die Sammlung von Diagnosedaten automatisch um 01:00 Uhr beginnt und automatisch um 03:00:00 Uhr endet. Geben Sie die Start- und Beendigungszeit mit dem /B-Argument und dem /E-Argument an. Verwenden Sie die 24-Stunden-Notation, um das genau Start- und Beendigungsdatum und die Uhrzeit im Format YYYYMMDD_HH:MM:SS anzugeben. Zum Angeben einer relativen Start- und Beendigungszeit geben Sie + vor der Start- und der Beendigungszeit an, wobei jedoch der Datumsabschnitt (YYYYMMDD_) wie im folgenden Beispiel gezeigt, entfällt. Diese Angabe bewirkt, dass SQLdiag 1 Stunde wartet, bevor mit dem Sammeln von Informationen begonnen wird. Die Datensammlung wird dann für 3 Stunden fortgeführt und danach beendet:

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

Wenn ein relativer start_time-Wert angegeben wird, wird SQLdiag zu einem Zeitpunkt gestartet, der relativ zum aktuellen Datum und zur aktuellen Uhrzeit ist. Wenn ein relativer end_time-Wert angegeben wird, wird SQLdiag zu einem Zeitpunkt beendet, der relativ zum angegebenen start_time-Wert ist. Wenn die angegebenen Start- oder Beendigungszeitpunkte in der Vergangenheit liegen, erzwingt SQLdiag eine Änderung des Startdatums, sodass Startdatum und -uhrzeit in der Zukunft liegen.

Dies hat erhebliche Auswirkungen auf die von Ihnen ausgewählten Start- und Beendigungsdaten. Betrachten Sie das folgende Beispiel:

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

Wenn es derzeit 08:00 Uhr, ist die Beendigungszeit schon vorbei, bevor die Sammlung der Diagnosedaten überhaupt begonnen hat. Da SQLDiag die Start- und Beendigungsdaten automatisch anpasst und auf den nächsten Tag verschiebt, wenn die Zeitpunkte in der Vergangenheit liegen, beginnt die Sammlung der Diagnosedaten in diesem Beispiel heute um 09:00 Uhr (mit + wurde eine relative Startzeit angegeben) und wird bis zum folgenden Morgen um 08:30 Uhr fortgeführt.

Beenden und erneutes Starten von SQLdiag zum Sammeln täglicher Diagnoseinformationen

Mithilfe von /L können Sie jeden Tag einen angegebenen Satz von Diagnosedaten sammeln, ohne SQLdiag manuell starten und beenden zu müssen. Durch /L wird SQLdiag fortlaufend ausgeführt, da dieses Argument bewirkt, dass sich das Hilfsprogramm nach einem geplanten Herunterfahren automatisch neu startet. Wenn /L angegeben wurde und SQLdiag beendet wird, weil die mit /E angegebene Beendigungszeit erreicht wurde oder weil das Hilfsprogramm durch die Angabe von /X im Momentaufnahmemodus ausgeführt wird, wird SQLdiag nicht vollständig beendet, sondern erneut gestartet.

Im folgenden Beispiel wird angegeben, dass SQLdiag im fortlaufenden Modus ausgeführt wird, damit das Hilfsprogramm automatisch neu gestartet wird, nachdem zwischen 03:00:00 und 05:00:00 Uhr die Sammlung von Diagnosedaten erfolgt ist.

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

Im folgenden Beispiel wird angegeben, dass SQLdiag im fortlaufenden Modus ausgeführt wird, damit das Hilfsprogramm automatisch neu gestartet wird, nachdem um 03:00:00 Uhr eine Momentaufnahme der Diagnosedaten erstellt wurde.

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

Ausführen von SQLdiag als Dienst

Wenn Sie SQLdiag verwenden möchten, um Diagnosedaten über längere Zeiträume zu sammeln, in deren Verlauf Sie sich jedoch möglicherweise vom Computer abmelden müssen, auf dem SQLdiag ausgeführt wird, können Sie es als Dienst ausführen.

So registrieren Sie SQLDiag für das Ausführen als Dienst

Sie können SQLdiag für das Ausführen als Dienst registrieren, indem Sie /R in der Befehlszeile angeben. Hierdurch wird SQLDiag für das Ausführen als Dienst registriert. Der Dienstname von SQLdiag ist SQLDIAG. Wenn Sie beim Registrieren von SQLDiag als Dienst weitere Argumente in der Befehlszeile angeben, werden diese Argumente beibehalten und erneut verwendet, wenn der Dienst gestartet wird.

Wenn Sie den Standarddienstnamen SQLDIAG ändern möchten, geben Sie mit dem Befehlszeilenargument /A einen anderen Namen an. SQLdiag setzt vor jeden mit /A angegebenen Instanznamen von SQLdiag automatisch das Präfix DIAG$, um aussagefähige Dienstnamen zu erstellen.

So heben Sie die Registrierung des SQLDIAG-Diensts auf

Zum Aufheben der Dienstregistrierung geben Sie das Argument /U an. Wird die Registrierung von SQLdiag als Dienst aufgehoben, wird hierdurch auch der Windows-Registrierungsschlüssel für den SQLDIAG-Dienst gelöscht.

So starten Sie den SQLDIAG-Dienst bzw. führen einen Neustart des Diensts durch

Führen Sie zum Starten oder Neustarten des SQLDIAG-Diensts SQLDiag START an der Befehlszeile aus.

Falls Sie mithilfe des /A-Arguments mehrere Instanzen von SQLdiag ausführen, können Sie beim Starten des Diensts auch den Instanznamen von SQLdiag an der Befehlszeile übergeben. Verwenden Sie die folgende Syntax, um z. B. eine Instanz von SQLdiag mit dem Namen Instance1 zu starten:

SQLDIAG START /A Instance1

Sie können auch den Befehl net start verwenden, um den SQLDIAG-Dienst zu starten.

Wenn Sie SQLdiag neu starten, wird der Inhalt des aktuellen Ausgabeordners überschrieben. Soll dies verhindert werden, geben Sie /N 2 in der Befehlszeile an, damit der Ausgabeordner beim Starten des Hilfsprogramms umbenannt wird.

Das Anhalten des SQLdiag-Diensts wird nicht unterstützt.

Ausführen mehrerer Instanzen von SQLdiag

Sie können mehrere Instanzen von SQLdiag auf demselben Computer ausführen, indem Sie /ASQLdiag_application_name in der Befehlszeile angeben. Dies ist sinnvoll, wenn von derselben Instanz von SQL Server verschiedene Sätze von Diagnosedaten gleichzeitig gesammelt werden sollen. Sie können beispielsweise eine benannte Instanz von SQLdiag konfigurieren, um fortlaufend eine geringe Menge von Daten zu sammeln. Falls anschließend ein bestimmtes Problem in SQL Server auftritt, können Sie die Standardinstanz von SQLdiag ausführen, um Diagnosedaten für dieses Problem zu sammeln, oder um auf Anforderung vom Microsoft Kundenservice und -support hin einen Satz von Diagnosedaten zu sammeln, die für die Diagnose eines Problems erforderlich sind.

Sammeln von Diagnosedaten von gruppierten SQL Server-Instanzen

SQLdiag unterstützt das Sammeln von Diagnosedaten von gruppierten Instanzen von SQL Server. Zum Sammeln von Diagnosedaten von gruppierten SQL Server-Instanzen müssen Sie sicherstellen, dass "." für das name-Attribut des <Machine>-Elements in der Konfigurationsdatei SQLDiag.Xml angegeben ist. Weiterhin darf kein /G-Argument in der Befehlszeile angegeben werden. Standardmäßig wird "." für das name-Attribut in der Konfigurationsdatei angegeben und das /G-Argument deaktiviert. Normalerweise ist es nicht nötig, die Konfigurationsdatei zu bearbeiten oder die Befehlszeilenargumente zu ändern, wenn Sie Diagnosedaten von einer gruppierten Instanz von SQL Server sammeln möchten.

Wenn "." als Computername angegeben ist, erkennt SQLdiag, dass es in einem Cluster ausgeführt wird, und ruft daher gleichzeitig Diagnoseinformationen von allen virtuellen Instanzen von SQL Server ab, die auf dem Cluster installiert sind. Wenn die Diagnosedaten nur für eine der virtuellen Instanzen von SQL Server gesammelt werden sollen, die auf einem Computer ausgeführt werden, müssen Sie den Namen dieser virtuellen Instanz von SQL Server für das name-Attribut des <Machine>-Elements in SQLDiag.Xml angeben.

HinweisHinweis

Zum Sammeln von SQL Server Profiler-Ablaufverfolgungsinformationen aus gruppierten Instanzen von SQL Server müssen auf dem Cluster administrative Freigaben (ADMIN$) aktiviert sein.