Het diagnostische logboek van het Failover Cluster-exemplaar weergeven en lezen

Van toepassing op:SQL Server

Alle kritieke fouten en waarschuwings gebeurtenissen voor de SQL Server resource-DLL worden naar het Windows gebeurtenislogboek geschreven. Een doorlopend logboek van de diagnostische informatie die specifiek is voor SQL Server wordt vastgelegd door de opgeslagen systeemprocedure sp_server_diagnostics (Transact-SQL) en wordt weggeschreven naar de diagnoselogbestanden van het SQL Server-failovercluster (ook wel de SQLDIAG-logboeken genoemd).

Voordat u begint

Bestandsnaam, locatie en indeling

Standaard worden de SQLDIAG-bestanden opgeslagen in een lokale map LOG binnen de map van het SQL Server-exemplaar, bijvoorbeeld 'C\Program Files\Microsoft SQL Server\MSSQL13.<InstanceName>\MSSQL\LOG' op de eigenaarnode van het Always On-failoverclusterexemplaar (FCI). De maximale grootte van elk SQLDIAG-logboekbestand is vastgesteld op 100 MB. Tien dergelijke logboekbestanden worden opgeslagen op de computer voordat ze worden gerecycled voor nieuwe logboeken. De bestandsnaam heeft de volgende indeling MACHINE_SQLINSTANCE_SQLDIAG_0_xxxxxxxxxxxxxxxxx.xel , waarbij het laatste deel 'xxxxxxxx' een automatisch gegenereerd nummer is. Voor een standaardinstantie zou de bestandsnaam bijvoorbeeld NODE1_MSSQLSERVER_SQLDIAG_0_133177967257760000.xel zijn en voor een benoemde instantie zou de naam NODE1_SQL2019INST_SQLDIAG_0_133177967257760000.xel zijn

De logboeken gebruiken de bestandsindeling voor uitgebreide gebeurtenissen. De sys.fn_xe_file_target_read_file systeemfunctie kan worden gebruikt om de bestanden te lezen die zijn gemaakt door uitgebreide gebeurtenissen en deze weer te geven als een resultatenset. Eén gebeurtenis, in XML-indeling, wordt per rij geretourneerd. Zie sys.fn_xe_file_target_read_file (Transact-SQL) voor meer informatie.

Security

Permissions

VIEW Serverstatusmachtiging is nodig om fn_xe_file_target_read_file uit te voeren.

Open SQL Server Management Studio als beheerder

SQL Server Management Studio gebruiken

De diagnostische logboekbestanden weergeven:

  1. Selecteer in het menu Bestand de optie Openen, Bestand en kies het diagnostische logboekbestand dat u wilt weergeven.

  2. De gebeurtenissen worden weergegeven als rijen in het rechterdeelvenster en standaardnaam en tijdstempel zijn de enige twee kolommen die worden weergegeven.

    Hiermee wordt ook het menu ExtendedEvents geactiveerd.

  3. Als u meer kolommen wilt zien, gaat u naar het menu ExtendedEvents en selecteert u Kolommen kiezen.

    Er wordt een dialoogvenster geopend met de beschikbare kolommen, zodat u de kolommen kunt selecteren die moeten worden weergegeven.

  4. U kunt de gebeurtenisgegevens filteren en sorteren met behulp van het menu ExtendedEvents en de optie Filter selecteren.

Diagnostische logboekbestanden weergeven met Transact-SQL

De diagnostische logboekbestanden weergeven:

Gebruik de volgende query om alle logboekitems in het SQLDIAG-logboekbestand weer te geven:

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;

Note

U kunt de resultaten filteren op specifieke onderdelen of status met behulp van de WHERE-component.

Eigenschappen van diagnostisch logboek configureren met Transact-SQL

De eigenschappen van het diagnostische logboek configureren:

Note

Zie voorbeeld (Transact-SQL)verderop in deze sectie voor een voorbeeld van deze procedure.

Met behulp van de DDL-instructie ALTER SERVER CONFIGURATION(Data Definition Language) kunt u diagnostische gegevens die zijn vastgelegd met de procedure sp_server_diagnostics (Transact-SQL) starten of stoppen, en parameters voor logboekconfiguratie instellen, zoals het aantal rollover-logboekbestanden, de bestandsgrootte van het logboek en de locatie van het bestand. Zie Opties voor diagnostisch logboek instellen voor syntaxis.

Voorbeelden (Transact-SQL)

Opties voor diagnostisch logboek instellen

In de voorbeelden in deze sectie ziet u hoe u de waarden voor de optie diagnostisch logboek instelt.

A. Diagnostische logboekregistratie starten

In het volgende voorbeeld wordt de logboekregistratie van diagnostische gegevens gestart.

ALTER SERVER CONFIGURATION SET DIAGNOSTICS LOG ON;
B. Diagnostische logboekregistratie stoppen

In het volgende voorbeeld wordt de logboekregistratie van diagnostische gegevens gestopt.

ALTER SERVER CONFIGURATION SET DIAGNOSTICS LOG OFF;
C. De locatie van de diagnostische logboeken opgeven

In het volgende voorbeeld wordt de locatie van de diagnostische logboeken ingesteld op het opgegeven bestandspad.

ALTER SERVER CONFIGURATION
SET DIAGNOSTICS LOG PATH = 'C:\logs';
D. De maximale grootte van elk diagnostisch logboek opgeven

In het volgende voorbeeld wordt de maximale grootte van elk diagnostisch logboek ingesteld op 10 megabytes.

ALTER SERVER CONFIGURATION
SET DIAGNOSTICS LOG MAX_SIZE = 10 MB;
E. Controleer of het diagnostische logboek van failoverclusterinstanties is ingeschakeld en wat de huidige configuratie is.

In het volgende voorbeeld wordt de dmv-sys.dm_os_server_diagnostics_log_configurations gebruikt om de huidige configuratie te controleren

SELECT is_enabled, [path], max_size, max_files
FROM sys.dm_os_server_diagnostics_log_configurations;

Zie ook