Freigeben über


SQLdiag (Hilfsprogramm)

Gilt für: SQL Server

Das Hilfsprogramm SQLDiag listet allgemeine Diagnoseinformationen auf und kann als Konsolenanwendung oder 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.

Hinweis

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.

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

Argumente

/?
Zeigt Nutzungsinformationen an.

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

/O output_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 SQLDiag geschrieben. Wenn der Ordner SQLDIAG nicht vorhanden ist, versucht SQLDiag , ihn zu erstellen.

Hinweis

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

/P support_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.

Hinweis

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

SQLDIAG /P %cd%

/N output_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.

Hinweis

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.

/M machine1 [ machine2 machineN] | @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.

/C file_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:00angeben, wartet SQLDiag 2 Stunden, bevor die Sammlung von Informationen gestartet wird.

Fügen Sie kein Leerzeichen zwischen + und dem angegebenen Wert für start_timeein.

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 einen Zeitpunkt relativ zum Datum und zur Uhrzeit des Startzeitpunkts anzugeben. Wenn Sie beispielsweise /B +02:00:00 /E +03:00:00angeben, 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 /Eangegeben wurde.

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

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 identifiziert 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.

Zum 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. Zum Beispiel:

SQLDIAG /R /A SQLdiag_application_name

Hinweis

SQLDiag setzt vor den für SQLDiag_application_nameangegebenen 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 }
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, wenn der Client eine Verbindung mit einer Instanz von SQL Server auf demselben Computer herstellt.

/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 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 nicht der Gruppe SQL Server Administratoren an, werden keine -Diagnoseinformationen gesammelt.

/R
Registriert SQLDiag als Dienst. Alle Befehlszeilenargumente, die angegeben werden, wenn Sie SQLDiag als Dienst registrieren, werden für die kü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.

Hinweis

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 SQLDiagangibt, kann zusammen mit START, STOPoder STOP_ABORT verwendet werden, um eine bestimmte Instanz des SQLDiag -Diensts zu steuern. Zum Beispiel:

SQLDIAG START /A SQLdiag_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 SQL Server-Serverrolle sysadmin sein. Standardmäßig verwendet SQLDiag die Windows-Authentifizierung für die Verbindung mit SQL Server . Die SQL Server -Authentifizierung wird jedoch ebenfalls unterstützt.

Überlegungen zur Leistung

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 SQLDiagzu ü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 Befehlszeilenarguments /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 wie dem SQL Server-Hilfsprogramm sqlcmd oder dem Windows-Befehlsprozessor hergestellt werden, es sei denn die Informationen werden über Windows-Leistungs- und Ereignisprotokolle 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 manuell über CTRL+C stoppen, eine sqldiag.stop-Datei erstellen oder so konfigurieren, dass er zu einem bestimmten Zeitpunkt stoppt. Sie können SQLDiag so konfigurieren, dass die Datensammlung zu einem bestimmten Zeitpunkt beendet wird, indem Sie das Argument /E verwenden oder das Argument /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.

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. Sie können auch einfach die SQLDiag-Dienste im Applet Services.msc beenden.

Hinweis

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.

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  

Hinweis

/A ist das einzige Befehlszeilenargument, das mit START, STOPoder STOP_ABORTverwendet 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.

Hinweis

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-Dienstkonsole.

Beenden von SQLDiag mithilfe der Datei „sqldiag.stop“

SQLDiag wird auch automatisch heruntergefahren, wenn eine Datei namens sqldiag.stop im Ordner „\Output“ des Hilfsprogramms gefunden wird. Diese Option gilt unabhängig davon, ob SQLDiag als Konsolen-App oder als Dienst ausgeführt wird. Das Erstellen einer .stop-Datei kann nützlich sein, wenn Sie SQLDiag nach einem Ereignis programmgesteuert herunterfahren möchten, Sie aber nicht im Voraus wissen, wann dieses Ereignis eintritt. Der Inhalt der sqldiag.stop-Datei ist irrelevant. Sie können die Datei nicht nur manuell erstellen, sondern auch einen Befehl wie den folgenden in einer Batchdatei verwenden, um sqldiag.stop zu erstellen:

ECHO abc > F:\PSSDIAG\Output\sqldiag.stop

Eine weitere Möglichkeit ist die Verwendung von PowerShell.

Set-Content -Value "stop please" -Path "G:\pssdiag\output\sqldiag.stop"

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 02:00:00 Uhr auftritt, können Sie SQLDiag so konfigurieren, dass die Sammlung von Diagnosedaten automatisch um 01:45 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 Datum und die Uhrzeit des genauen Start- und Endzeitpunkts im Format YYYYMMDD_HH:MM:SS anzugeben. Im Folgenden wird die Datensammlung um 01:45 Uhr gestartet und um 3:00 Uhr beendet.

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

Um einen relativen Start- oder Endzeitpunkt anzugeben, stellen Sie der Start- und Endzeitangabe ein + voran, und lassen Sie den Datumsteil (YYYYMMDD_) aus, wie im folgenden Beispiel gezeigt. Dies führt dazu, dass SQLDiag eine Stunde wartet, bevor mit dem Sammeln von Informationen begonnen wird. Die Informationssammlung wird 2,5 Stunden lang durchgeführt und anschließend beendet:

sqldiag /B +01:00:00 /E +02:30: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 folgenden 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 das Start- und das Enddatum 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 (durch + wurde eine relative Startzeit für 1 Stunde nach dem aktuellen Zeitpunkt 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 /Lkö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 SQLDiagneu 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 Serverauftritt, 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 in der Befehlszeile nicht das Argument /G angegeben werden. Standardmäßig ist "." für das name -Attribut in der Konfigurationsdatei angegeben und das Argument /G 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 im Cluster ab. Wenn die Diagnosedaten nur für eine der virtuellen Instanzen von SQL Server gesammelt werden sollen, die auf einem Computer ausgeführt wird, müssen Sie den Namen dieser virtuellen Instanz von SQL Server im name-Attribut des <Machine>-Elements in „SQLDiag.Xml“ angeben.

Hinweis

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

Weitere Informationen

Referenz zum Eingabeaufforderungs-Hilfsprogramm (Datenbank-Engine)