Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Alle kritischen Fehler und Warnungsereignisse für die Ressourcen-DLL von SQL Server werden in das Windows-Ereignisprotokoll geschrieben. Ein Ausführungsprotokoll mit für SQL Server spezifischen Diagnoseinformationen wird von der gespeicherten Systemprozedur sp_server_diagnostics (Transact-SQL) erfasst und in die Protokolldateien der SQL Server-Failoverclusterdiagnose (auch bezeichnet als SQLDIAG-Protokolle) geschrieben.
Vorbereitung:Dateiname, Speicherort und Format, Sicherheit
Vorgehensweise zum Anzeigen des Diagnoseprotokolls mit:SQL Server Management Studio, Transact-SQL
Vorgehensweise zum Konfigurieren der Einstellungen für Diagnoseprotokolle mit:Transact-SQL
Bevor Sie beginnen
Dateiname, Speicherort und Format
Die SQLDIAG-Protokolle werden standardmäßig in einem lokalen LOG-Ordner im Instanzverzeichnis von SQL Server gespeichert, z. B. unter „C\Program Files\Microsoft SQL Server\MSSQL13.<Instanzname>\MSSQL\LOG“ auf dem Besitzknoten der Always On-Failoverclusterinstanz (FCI). Die maximale Größe jeder SQLDIAG-Protokolldatei wird auf 100 MB begrenzt. Zehn dieser Protokolldateien werden auf dem Computer gespeichert, bevor sie für neue Protokolle wiederverwendet werden. Der Dateiname weist das Format MACHINE_SQLINSTANCE_SQLDIAG_0_xxxxxxxxxxxxxxxxx.xel auf, wobei der letzte Teil „xxxxxxxx“ eine automatisch generierte Zahl ist. Für eine Standardinstanz würde der Dateiname beispielsweise NODE1_MSSQLSERVER_SQLDIAG_0_133177967257760000.xel und für eine benannte Instanz NODE1_SQL2019INST_SQLDIAG_0_133177967257760000.xel lauten.
Die Protokolle verwenden das Dateiformat für erweiterte Ereignisse. Mit der Systemfunktion sys.fn_xe_file_target_read_file können Sie die Dateien lesen, die durch erweiterte Ereignisse erstellt wurden, und als Resultset anzeigen. Pro Zeile wird ein Ereignis im XML-Format zurückgegeben. Weitere Informationen finden Sie unter sys.fn_xe_file_target_read_file (Transact-SQL).
Sicherheit
Berechtigungen
VIEW DIE SERVER STATE-Berechtigung ist erforderlich, um fn_xe_file_target_read_file auszuführen.
Öffnen von SQL Server Management Studio als Administrator
Verwenden Sie SQL Server Management Studio
So zeigen Sie die Diagnoseprotokolldateien an:
Wählen Sie im Menü Datei die Option Öffnen, Datei, und wählen Sie die anzuzeigende Diagnoseprotokolldatei an.
Die Ereignisse werden als Zeilen im rechten Bereich angezeigt. Standardmäßig werden nur die Spalten nameund timestamp angezeigt.
Dadurch wird außerdem das Menü ExtendedEvents aktiviert.
Rufen Sie zum Anzeigen weiterer Spalten das Menü ExtendedEvents auf, und wählen Sie Spalten auswählen.
Ein Dialogfeld mit den verfügbaren Spalten wird angezeigt, in dem Sie die anzuzeigenden Spalten auswählen können.
Sie können die Ereignisdaten mithilfe des Menüs ExtendedEvents und der Option Filter filtern und sortieren.
Anzeigen von Diagnoseprotokolldateien mit Transact-SQL
So zeigen Sie die Diagnoseprotokolldateien an:
Um alle Protokollelemente in der SQLDIAG-Protokolldatei anzuzeigen, verwenden Sie die folgende Abfrage:
SELECT
xml_data.value('(event/@name)[1]','varchar(max)') AS 'Name'
,xml_data.value('(event/@package)[1]','varchar(max)') AS 'Package'
,xml_data.value('(event/@timestamp)[1]','datetime') AS 'Time'
,xml_data.value('(event/data[@name=''state'']/value)[1]','int') AS 'State'
,xml_data.value('(event/data[@name=''state_desc'']/text)[1]','varchar(max)') AS 'State Description'
,xml_data.value('(event/data[@name=''failure_condition_level'']/value)[1]','int') AS 'Failure Conditions'
,xml_data.value('(event/data[@name=''node_name'']/value)[1]','varchar(max)') AS 'Node_Name'
,xml_data.value('(event/data[@name=''instancename'']/value)[1]','varchar(max)') AS 'Instance Name'
,xml_data.value('(event/data[@name=''creation time'']/value)[1]','datetime') AS 'Creation Time'
,xml_data.value('(event/data[@name=''component'']/value)[1]','varchar(max)') AS 'Component'
,xml_data.value('(event/data[@name=''data'']/value)[1]','varchar(max)') AS 'Data'
,xml_data.value('(event/data[@name=''info'']/value)[1]','varchar(max)') AS 'Info'
FROM
( SELECT object_name AS 'event'
,CONVERT(xml,event_data) AS 'xml_data'
FROM sys.fn_xe_file_target_read_file('C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Log\SQLNODE1_MSSQLSERVER_SQLDIAG_0_129936003752530000.xel',NULL,NULL,NULL)
)
AS XEventData
ORDER BY Time;
Hinweis
Sie können die Ergebnisse nach bestimmten Komponenten oder Status filtern, indem Sie die WHERE-Klausel verwenden.
Konfigurieren von Diagnoseprotokolleigenschaften mit Transact-SQL
So konfigurieren Sie die Diagnoseprotokolleigenschaften:
Hinweis
Ein Beispiel für diese Prozedur finden Sie weiter unten in diesem Abschnitt unter Beispiel (Transact-SQL).
Mit der DDL-Anweisung ALTER SERVER CONFIGURATION(Data Definition Language) können Sie diagnosedaten starten oder beenden, die von der sp_server_diagnostics (Transact-SQL) -Prozedur erfasst werden, und SQLDIAG-Protokollkonfigurationsparameter wie die Anzahl der Protokolldateirollovers, die Dateigröße und den Dateispeicherort festlegen. Einzelheiten zur Syntax finden Sie unter Setting diagnostic log options.
Beispiele (Transact-SQL)
Festlegen der Optionen des Diagnoseprotokolls
Die Beispiele in diesem Abschnitt veranschaulichen, wie die Werte für die Diagnoseprotokolloption festgelegt werden.
A. Starten der Diagnoseprotokollierung
Im folgenden Beispiel wird die Protokollierung von Diagnosedaten gestartet.
ALTER SERVER CONFIGURATION SET DIAGNOSTICS LOG ON;
B. Beenden der Diagnoseprotokollierung
Im folgenden Beispiel wird die Protokollierung von Diagnosedaten beendet.
ALTER SERVER CONFIGURATION SET DIAGNOSTICS LOG OFF;
C. Angeben des Speicherorts für die Diagnoseprotokolle
Im folgenden Beispiel wird der Speicherort für die Diagnoseprotokolle auf den angegebenen Dateipfad festgelegt.
ALTER SERVER CONFIGURATION
SET DIAGNOSTICS LOG PATH = 'C:\logs';
D. Angeben der maximalen Größe jedes Diagnoseprotokolls
Im folgenden Beispiel wird die maximale Größe jedes Diagnoseprotokolls auf 10 Megabytes festgelegt.
ALTER SERVER CONFIGURATION
SET DIAGNOSTICS LOG MAX_SIZE = 10 MB;
E. Überprüfen Sie, ob das Diagnoseprotokoll der Failoverclusterinstanz aktiviert ist und wie die aktuelle Konfiguration lautet.
Im folgenden Beispiel wird die DMV sys.dm_os_server_diagnostics_log_configurations verwendet, um die aktuelle Konfiguration zu überprüfen.
SELECT is_enabled, [path], max_size, max_files
FROM sys.dm_os_server_diagnostics_log_configurations;