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 geändert werden, und Anwendungen oder Skripts, die auf ihren Befehlszeilenargumenten oder -verhalten basieren, funktionieren in zukünftigen Versionen möglicherweise nicht ordnungsgemäß.

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 Arten von Informationen SQLdiag erfasst werden sollen, indem Sie die Konfigurationsdatei SQLdiag.xmlbearbeiten, die in einem folgenden Abschnitt beschrieben wird.

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 Konfigurationsdatei

Legt die Konfigurationsdatei fest, die SQLDiag verwenden soll. Standardmäßig ist /I auf SQLdiag.xmlfestgelegt.

/O output_folder_path

Leitet die Ausgabe von SQLDiag in den angegebenen Ordner um. Wenn die /O Option nicht angegeben ist, wird die SQLdiag-Ausgabe in einen Unterordner geschrieben, der unter dem SQLDIAG benannt ist. Wenn der SQLDIAG Ordner nicht vorhanden ist, versucht SQLdiag , ihn zu erstellen.

Hinweis

Der Speicherort des Ausgabeordners ist relativ zum Speicherort des Supportordners, der mit /Pangegeben werden kann. Wenn Sie einen völlig anderen Speicherort für den Ausgabeordner festlegen möchten, geben Sie den vollständigen Verzeichnispfad für /O.

/P support_folder_path

Legt den Pfad für den Unterstützungsordner fest. Standardmäßig ist /P auf den Ordner eingestellt, in dem sich die ausführbare Datei SQLdiag befindet. 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 diese Option verwenden, um einen alternativen Pfad für Supportdateien anzugeben, kopiert SQLdiag automatisch die Supportdateien, die sie benötigt, in den angegebenen Ordner, sofern sie noch nicht vorhanden sind.

Um den aktuellen Ordner als Supportpfad festzulegen, geben Sie %cd% in der Befehlszeile folgendes an:

sqldiag /P %cd%

/N Verwaltungsoption für Ausgabeverzeichnisse

Legt fest, ob SQLDiag den Ausgabeordner beim Starten überschreibt oder umbenennt. Verfügbare Optionen:

  • 1 = Überschreibt den Ausgabeordner (Standardeinstellung)
  • 2 = Wenn SQLdiag gestartet wird, wird der Ausgabeordner in SQLDIAG_00001, SQLDIAG_00002usw. umbenannt. Nach dem Umbenennen des aktuellen Ausgabeordners schreibt SQLdiag die Ausgabe in den Standardausgabeordner SQLDIAG.

SQLdiag fügt beim Starten keine Ausgabe zum aktuellen Ausgabeordner hinzu. Er kann nur den Standardausgabeordner (Option 1) überschreiben oder den Ordner umbenennen (Option 2), und dann wird die Ausgabe in den neuen Standardausgabeordner mit dem Namen SQLDIAGgeschrieben.

/M Machine1 [ machine2machineN ] | @machinelistfile

Überschreibt die in der Konfigurationsdatei angegebenen Maschinen. Standardmäßig ist die Konfigurationsdatei SQLdiag.xml oder wird mit dem Parameter /I festgelegt. Wenn Sie mehr als einen Computer angeben möchten, verwenden Sie Leerzeichen zum Trennen der Computernamen.

Die Option @machinelistfile gibt einen Computerlistendateinamen an, der in der Konfigurationsdatei gespeichert werden soll.

/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 für die Erfassung von Diagnosedaten im folgenden Format an: yyyyMMdd_HH:mm:ss

Die Uhrzeit wird in 24-Stunden-Notation angegeben. Beispielsweise sollte 2:00 Uhr als 14:00:00 angegeben werden.

Wird + ohne das Datum (nur HH:mm:ss) verwendet, um eine Zeit anzugeben, die relativ zum aktuellen Datum und zur aktuellen Uhrzeit ist. Wenn Sie beispielsweise angeben /B +02:00:00, wartet SQLdiag 2 Stunden, bevor sie mit dem Sammeln von Informationen beginnt.

Fügen Sie kein Leerzeichen zwischen + und dem angegebenen start_time 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 z. B. angeben /B 01:00:00 und die aktuelle Uhrzeit 08:00:00 ist, ändert SQLdiag forcibly das Startdatum so, dass das Startdatum der nächste Tag ist.

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

/E [+]stop_time

Gibt das Datum und die Uhrzeit an, an dem das Sammeln von Diagnosedaten im folgenden Format beendet werden soll: yyyyMMdd_HH:mm:ss

Die Uhrzeit wird in 24-Stunden-Notation angegeben. Beispielsweise sollte 2:00 Uhr als 14:00:00 angegeben werden.

Wird + ohne das Datum (nur HH:mm:ss) verwendet, um eine Zeit anzugeben, die relativ zum Startdatum und zur Startzeit ist. Wenn Sie beispielsweise eine Start- und Endzeit mithilfe /B +02:00:00 /E +03:00:00von SQLdiag angeben, wartet SQLdiag 2 Stunden, bevor sie mit dem Sammeln von Informationen beginnt, und sammelt dann Informationen für 3 Stunden, bevor sie angehalten und beendet wird. Wenn /B nicht angegeben wird, beginnt SQLdiag sofort mit der Erfassung der Diagnosedaten und endet zum angegebenen Datum und zur angegebenen Uhrzeit /E.

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

SQLdiag verwendet die lokale Zeit auf dem Computer, 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.

Ersetzen Sie <SQLdiag_application_name> in diesem Beispiel durch den entsprechenden Wert für SQLdiag_application_name:

sqldiag START /A <SQLdiag_application_name>

Sie kann auch mit der /R Option verwendet werden, eine bestimmte Instanz von SQLdiag als Dienst zu registrieren. Ersetzen Sie <SQLdiag_application_name> in diesem Beispiel durch den entsprechenden Wert für SQLdiag_application_name:

sqldiag /R /A <SQLdiag_application_name>

Hinweis

SQLdiag fügt automatisch dem für SQLdiag_application_name angegebenen Instanznamen ein Präfix hinzuDIAG$. Hierdurch kann beim Registrieren von SQLDiag als Dienst ein aussagefähiger Dienstname bereitgestellt werden.

/ T-Protokoll

Stellt eine Verbindung mit einer Instanz von SQL Server mithilfe eines der folgenden Protokollwerte bereit.

Protokoll (und Port) Description
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 benannte Pipe \\.\pipe\sql\query und \\.\pipe\MSSQL$<instancename>\sql\query auf eine benannte Instanz. Sie können keine Verbindung mit einer SQL Server-Instanz herstellen, indem Sie einen alternativen Pipenamen verwenden.
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 Eingabeaufforderungen, z. B. Kennwortaufforderungen.

/G

Führt SQLDiag im generischen Modus aus. Wenn /G angegeben, erzwingt SQLdiag beim Start keine SQL Server-Verbindungsüberprüfungen oder ü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.

Falls /G nicht angegeben, überprüft SQLdiag , ob der Benutzer Mitglied der Gruppe " Windows-Administratoren " ist, und sammelt keine SQL Server-Diagnose, wenn der Benutzer kein Administratorgruppenmitglied ist.

/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 ist, lautet SQLDIAGder Standarddienstname . Sie können den Dienstnamen mithilfe des /A Arguments ändern.

Verwenden Sie das START Befehlszeilenargument, um den Dienst zu starten:

sqldiag START

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

net start SQLDIAG

/U

Hebt die Registrierung von SQLDiag als Dienst auf.

Verwenden Sie das /A Argument auch, wenn die Registrierung einer benannten SQLdiag-Instanz aufgehoben wird.

/L

Führt SQLdiag im fortlaufenden Modus aus, wenn auch eine Start- oder Endzeit mit den /B argumenten angegeben /E wird. SQLDiag wird automatisch neu gestartet, nachdem die Sammlung von Diagnoseinformationen aufgrund eines geplanten Herunterfahrens beendet wurde. Verwenden Sie z. B. die /E Argumente oder die /X Argumente.

Hinweis

SQLdiag ignoriert das /L Argument, wenn eine Start- oder Endzeit nicht mithilfe der /B/E Befehlszeilenargumente angegeben wird.

Die Verwendung /L impliziert nicht den Dienstmodus. /L Wenn Sie SQLdiag als Dienst ausführen möchten, geben Sie sie in der Befehlszeile an, wenn Sie den Dienst registrieren.

/X

Führt SQLDiag im Momentaufnahmemodus aus. SQLDiag erstellt eine Momentaufnahme aller konfigurierten Diagnosefunktionen und fährt danach automatisch herunter.

START | STOP | STOP_ABORT

Startet oder beendet den SQLDiag -Dienst. STOP_ABORT erzwingt, dass der Dienst so schnell wie möglich heruntergefahren wird, ohne die Sammlung der derzeit gesammelten Diagnosen zu beenden.

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

sqldiag START

Nur das /A Argument, das eine benannte Instanz von SQLdiag angibt, kann mit START, oder STOPSTOP_ABORT zum Steuern einer bestimmten Instanz des SQLdiag-Diensts verwendet werden. Ersetzen Sie <SQLdiag_application_name> in diesem Beispiel durch den entsprechenden Wert für SQLdiag_application_name:

sqldiag START /A <SQLdiag_application_name>

Sicherheitsanforderungen

Sofern SQLdiag nicht im generischen Modus ausgeführt wird (durch Angabe des /G Befehlszeilenarguments), muss der Benutzer, der SQLdiag ausführt, mitglied der Windows-Administratorgruppe und ein Mitglied der festen Serverrolle sql Server 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.

Leistungsüberlegungen

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 Art und dem Umfang der Workload ab, die der Server verarbeitet, und kann von einigen Megabyte bis zu mehreren Gigabyte 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 SQLdiag.xml Konfigurationsdatei, die jedes Mal extrahiert wird, wenn das Tool ausgeführt wird und sich im Startordner des SQLdiag-Hilfsprogramms befindet. 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 kopieren und bearbeiten SQLdiag.xml , um die Arten von Diagnosedaten zu ändern, die SQLdiag sammelt. Bearbeiten Sie die Konfigurationsdatei immer mit einem XML-Editor, der die Konfigurationsdatei anhand des XML-Schemas überprüfen kann (z. B. Management Studio). Sie sollten SQLdiag.xml nicht direkt bearbeiten. Erstellen Sie stattdessen eine Kopie von SQLdiag.xml und benennen Sie diese im selben Ordner in einen neuen Dateinamen um. Bearbeiten Sie dann die neue Datei, und verwenden Sie das /I Argument, 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 bearbeiten müssen, heben Sie die Registrierung des SQLDIAG Diensts auf, indem Sie das /U Befehlszeilenargument angeben und dann den Dienst mithilfe des /R Befehlszeilenarguments 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 mit dem /O Argument angeben, erstellt SQLdiag einen Unterordner SQLDIAG unter dem Startordner SQLdiag . Stellen Sie bei der Diagnoseinformationssammlung, die die Ablaufverfolgung mit hohem Volumen umfasst, wie z. B. SQL Server Profiler, sicher, dass sich der Ausgabeordner auf einem lokalen Laufwerk mit genügend Speicherplatz befindet, um die angeforderte Diagnoseausgabe zu speichern.

Bei einem Neustart von SQLDiag wird der Inhalt des Ausgabeordners überschrieben. Um dies zu vermeiden, geben Sie dies in der Befehlszeile an /N 2 .

Datensammlungsprozess

Wenn SQLdiag gestartet wird, führt sie die Initialisierungsprüfungen durch, die zum Sammeln der diagnosedaten erforderlich sind, die in SQLdiag.xmlangegeben wurden. Dieser Vorgang kann mehrere Sekunden dauern. Nachdem SQLdiag mit dem Sammeln von Diagnosedaten begonnen hat, wenn sie als Konsolenanwendung ausgeführt wird, zeigt eine Meldung an, dass die SQLdiag-Sammlung gestartet wurde und Sie STRG+C drücken können, um sie zu beenden. Wenn SQLDiag als Dienst ausgeführt wird, wird eine vergleichbare Meldung in das Windows-Ereignisprotokoll geschrieben.

Wenn Sie SQLdiag verwenden, um ein Problem zu diagnostizieren, das Sie reproduzieren können, warten Sie, bis Sie diese Nachricht erhalten, bevor Sie das Problem auf Ihrem 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 dies weiterhin ausgeführt, es sei denn, Sie beenden sie manuell über Ctrl+C, oder Sie erstellen eine sqldiag.stop Datei, oder konfigurieren Sie sie so, dass sie zu einem bestimmten Zeitpunkt beendet wird. Sie können SQLdiag so konfigurieren, dass sie zu einem bestimmten Zeitpunkt beendet wird, indem Sie das /E Argument verwenden oder das /X Argument verwenden, wodurch SQLdiag im Momentaufnahmemodus ausgeführt wird.

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.

Beenden von SQLdiag beim Ausführen als Konsolenanwendung

Wenn Sie SQLdiag als Konsolenanwendung ausführen, drücken Sie STRG+C im Konsolenfenster, in dem SQLdiag ausgeführt wird, um sie zu beenden. Nachdem Sie STRG+C gedrückt haben, wird im Konsolenfenster eine Meldung angezeigt, in der Sie darüber informiert werden, dass die Datensammlung von SQLdiag beendet ist, und dass Sie warten sollten, bis der Prozess beendet wird, was mehrere Minuten dauern kann.

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

Beenden von SQLdiag beim Ausführen als Dienst

Wenn Sie SQLdiag als Dienst ausführen, führen sqldiag STOP Sie sie im SQLdiag-Startordner aus, um sie zu beenden. Oder Sie können die SQLdiag-Dienste im Services.msc-Applet 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 die Anwendung neu gestartet und überschreibt den Inhalt des Ausgabeordners. Um das Überschreiben des Ausgabeordners zu vermeiden, geben Sie /N 2 in der Befehlszeile an.

Wenn Sie mehrere Instanzen von SQLdiag auf demselben Computer ausführen, können Sie auch den NAMEN der SQLdiag-Instanz an die Befehlszeile übergeben, wenn Sie den Dienst beenden. Verwenden Sie die folgende Syntax, um z.B. eine Instanz von SQLDiag mit dem Namen „Instance1“ zu beenden:

sqldiag STOP /A Instance1

/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 Dienststeuerelementverben angeben müssen, geben Sie /A nach dem Steuerelementverb in der Befehlszeile an, wie im vorherigen Syntaxbeispiel gezeigt. Werden Kontrollverben verwendet, müssen diese als erstes Argument in der Befehlszeile angegeben werden.

Um den Dienst so schnell wie möglich zu beenden, führen Sie sqldiag STOP_ABORT im Startordner des Hilfsprogramms aus. Mit diesem Befehl wird das derzeitige Sammeln von Diagnoseinformationen sofort abgebrochen, ohne auf deren Abschluss zu warten.

Hinweis

Verwenden Sie sqldiag STOP oder sqldiag STOP_ABORT um den SQLdiag-Dienst zu stoppen. Verwenden Sie die Windows Services-Konsole nicht, um SQLdiag oder andere SQL Server-Dienste zu beenden.

Beenden von SQLdiag mithilfe der Datei "sqldiag.stop"

SQLdiag wird auch automatisch heruntergefahren, wenn eine Datei mit einem bestimmten Namen im Ordner des sqldiag.stop Hilfsprogramms \Output 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 programmgesteuert herunterfahren möchten, nachdem ein Ereignis eintritt, aber Sie wissen nicht im Voraus, 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 stop > F:\PSSDIAG\Output\sqldiag.stop

Eine weitere Option besteht darin, PowerShell zu verwenden:

Set-Content -Value "stop" -Path "F:\PSSDIAG\Output\sqldiag.stop"

Automatisches Starten und Beenden von SQLdiag

Um die Diagnosedatensammlung zu einem bestimmten Zeitpunkt automatisch zu starten und zu beenden, verwenden Sie die /B <start_time> Argumente /E <stop_time> und die 24-Stunden-Schreibweise. Wenn Sie z. B. ein Problem beheben, das konsistent bei ca. 02:00:00 angezeigt wird, können Sie SQLdiag so konfigurieren, dass diagnosedaten bei 01:45 automatisch erfasst und bei 03:00:00 automatisch beendet werden.

Verwenden Sie die /B Argumente, /E um die Start- und Stoppzeit anzugeben. Verwenden Sie die 24-Stunden-Notation, um ein genaues Start- und Stoppdatum und -uhrzeit mit dem allgemeinen Format yyyyMMdd_HH:mm:ss anzugeben. Im folgenden Beispiel wird die Datensammlung um 01:45 Uhr gestartet und um 3:00 Uhr beendet.

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

Wenn Sie eine relative Start- oder Stoppzeit angeben möchten, stellen Sie der Start- und Stoppzeit das Präfix voran, und + lassen Sie den Datumsteil (yyyyMMdd_) weg, wie im folgenden Beispiel gezeigt. Dies bewirkt, dass SQLdiag eine Stunde warten muss, bevor sie mit dem Sammeln von Informationen beginnt, und dann sammelt sie Informationen für zweieinhalb Stunden, bevor sie angehalten und beendet wird:

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, ist die Endzeit bereits überschritten, bevor die Sammlung der Diagnosedaten überhaupt begonnen hat. Da SQLdiag Anfangs- und Enddaten automatisch auf den nächsten Tag anpasst, wenn sie in der Vergangenheit liegen, beginnt in diesem Beispiel zur Diagnoseerfassung die Sammlung heute um 09:00 Uhr (eine relative Startzeit in 1 Stunde wurde festgelegt +) und setzt die Erfassung bis 08:30 Uhr am folgenden Morgen fort.

Beenden und starten Sie SQLdiag neu, um tägliche Diagnosen zu sammeln.

Verwenden Sie das Argument, um täglich eine bestimmte Gruppe von Diagnosen zu sammeln, ohne /L manuell starten und beenden zu müssen. Das /L Argument bewirkt, dass SQLdiag kontinuierlich ausgeführt wird, indem er sich nach einem geplanten Herunterfahren automatisch neu startet. Wenn /L angegeben wird und SQLdiag beendet wird, weil sie die mit dem /E Argument angegebene Endzeit erreicht hat, oder sie wird beendet, da sie mithilfe des /X Arguments im Momentaufnahmemodus ausgeführt wird, wird SQLdiag neu gestartet, anstatt zu beenden.

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 für lange Zeiträume zu sammeln, in denen Sie sich möglicherweise vom Computer abmelden müssen, auf dem SQLdiag ausgeführt wird, können Sie sie als Dienst ausführen.

Registrieren von SQLdiag zum Ausführen als Dienst

Sie können SQLdiag für die Ausführung als Dienst registrieren, indem Sie das /R Argument in der Befehlszeile angeben. Hierdurch wird SQLDiag für das Ausführen als Dienst registriert. Der Name des SQLdiag-Diensts lautet SQLDIAG. Alle anderen Argumente, die Sie in der Befehlszeile angeben, wenn Sie SQLdiag als Dienst registrieren, bleiben erhalten und wiederverwendet, wenn der Dienst gestartet wird.

Verwenden Sie zum Ändern des Standarddienstnamens SQLDIAG das /A Befehlszeilenargument, um einen anderen Namen anzugeben. SQLdiag präfixiert automatisch DIAG$ zu jedem angegebenen SQLdiag-Instanznamen mit /A, um sinnvolle Dienstnamen zu erstellen.

Aufheben der Registrierung des SQLDIAG-Diensts

Um die Registrierung des Diensts aufzuheben, geben Sie das /U Argument an. Wird die Registrierung von SQLDiag als Dienst aufgehoben, wird hierdurch auch der Windows-Registrierungsschlüssel für den SQLDIAG-Dienst gelöscht.

Starten oder Neustarten des SQLDIAG-Dienstes

Um den SQLDIAG Dienst zu starten oder neu zu starten, führen Sie die Ausführung sqldiag START über die Befehlszeile aus.

Wenn Sie mehrere Instanzen von SQLdiag mithilfe des /A Arguments ausführen, können Sie auch den SQLdiag-Instanznamen an die Befehlszeile übergeben, wenn Sie den Dienst starten. 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 net start Befehl verwenden, um den SQLDIAG Dienst zu starten.

Wenn Sie SQLDiagneu starten, wird der Inhalt des aktuellen Ausgabeordners überschrieben. Um dies zu vermeiden, geben Sie /N 2 in der Befehlszeile an, den Ausgabeordner beim Start des Hilfsprogramms umzubenennen.

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

Ausführen mehrerer Instanzen von SQLdiag

Führen Sie mehrere Instanzen von SQLdiag auf demselben Computer aus, indem Sie in der Befehlszeile angeben /A <SQLdiag_application_name> . 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. Wenn dann ein bestimmtes Problem auf SQL Server auftritt, können Sie die standardmäßige SQLdiag-Instanz ausführen, um Diagnosen für dieses Problem zu sammeln, oder um eine Reihe von Diagnosen zu sammeln, die microsoft Customer Support Services Sie auffordern, ein Problem zu diagnostizieren.

Sammeln von Diagnosedaten aus gruppierten SQL Server-Instanzen

SQLDiag unterstützt das Sammeln von Diagnosedaten von gruppierten Instanzen von SQL Server . Um Diagnosen aus gruppierten SQL Server-Instanzen zu sammeln, stellen Sie sicher, dass für das name-Attribut des Elements <Machine> in der Konfigurationsdatei SQLdiag.xml"." angegeben wird und dass das Argument /G nicht in der Befehlszeile angegeben wird. Standardmäßig "." wird für das name Attribut in der Konfigurationsdatei angegeben, und das /G Argument ist deaktiviert. Normalerweise müssen Sie die Konfigurationsdatei nicht bearbeiten oder die Befehlszeilenargumente beim Sammeln aus einer gruppierten SQL Server-Instanz ändern.

Wenn "." der Computername angegeben wird, erkennt SQLdiag , dass sie auf einem Cluster ausgeführt wird, und ruft gleichzeitig Diagnoseinformationen aus allen virtuellen Instanzen von SQL Server ab, die auf dem Cluster installiert sind. Wenn Sie Diagnoseinformationen nur aus einer virtuellen Instanz von SQL Server sammeln möchten, die auf einem Computer ausgeführt wird, geben Sie diesen virtuellen SQL Server für das name Attribut des <Machine> Elements in SQLdiag.xmlan.

Hinweis

Um SQL Server Profiler-Ablaufverfolgungsinformationen aus gruppierten SQL Server-Instanzen zu sammeln, müssen auf dem Cluster administrative Freigaben (ADMIN$) aktiviert sein.