Visualizzare e leggere il log di diagnostica dell'istanza del cluster di failover

Si applica a:SQL Server

Tutti gli errori critici e gli eventi di avviso relativi alla DLL risorse SQL Server vengono scritti nel registro eventi di Windows. Un log in esecuzione relativo a informazioni di diagnostica specifiche di SQL Server viene acquisito dalla stored procedure di sistema sp_server_diagnostics (Transact-SQL) e viene scritto nei file di log di diagnostica del cluster di failover di SQL Server, noti anche come log SQLDIAG.

Prima di iniziare

Nome file, percorso e formato

Per impostazione predefinita, i file SQLDIAG vengono archiviati in una cartella LOG locale della directory dell'istanza di SQL Server, ad esempio "C\Programmi\Microsoft SQL Server\MSSQL13.<NomeIstanza>\MSSQL\LOG", del nodo proprietario dell'istanza del cluster di failover Always On. La dimensione massima di ogni file di log SQLDIAG è pari a 100 MB. Successivamente, tali file di log vengono archiviati nel computer prima di essere riciclati per i nuovi log. Il nome del file è del formato seguente MACHINE_SQLINSTANCE_SQLDIAG_0_xxxxxxxxxxxxxxxxx.xel in cui l'ultima parte "xxxxxxxx" è un numero generato automaticamente. Ad esempio, per un'istanza predefinita, il nome del file sarà NODE1_MSSQLSERVER_SQLDIAG_0_133177967257760000.xel e per un'istanza denominata il nome sarà NODE1_SQL2019INST_SQLDIAG_0_133177967257760000.xel

Nei log viene utilizzato il formato di file degli eventi estesi. La funzione di sistema sys.fn_xe_file_target_read_file può essere usata per leggere i file creati da eventi estesi e visualizzarli come set di risultati. Viene restituito un evento per riga in formato XML. Per altre informazioni, vedere sys.fn_xe_file_target_read_file (Transact-SQL).

Sicurezza

Autorizzazioni

L'autorizzazione VIEW SERVER STATE è necessaria per eseguire fn_xe_file_target_read_file.

Aprire SQL Server Management Studio come amministratore.

Usare SQL Server Management Studio

Per visualizzare i file di log di diagnostica:

  1. Scegliere Apri dal menu File, selezionare File, quindi scegliere il file di log di diagnostica che si desidera visualizzare.

  2. Gli eventi vengono visualizzati come righe nel riquadro destro e per impostazione predefinita namee timestamp sono le uniche due colonne visualizzate.

    Viene inoltre attivato il menu ExtendedEvents .

  3. Per visualizzare più colonne, passare al menu ExtendedEvents e selezionare Scegli colonne.

    Verrà visualizzata una finestra di dialogo con le colonne disponibili in cui è possibile selezionare le colonne da visualizzare.

  4. È possibile filtrare e ordinare i dati degli eventi utilizzando il menu ExtendedEvents e selezionando l'opzione Filtro .

Visualizzare i file di log di diagnostica con Transact-SQL

Per visualizzare i file di log di diagnostica:

Per visualizzare tutte le voci di log nel file di log SQLDIAG, utilizzare la query seguente:

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;

Nota

È possibile filtrare i risultati in base a stati o componenti specifici utilizzando la clausola WHERE.

Configurare le proprietà del log di diagnostica con Transact-SQL

Per configurare le proprietà del log di diagnostica:

Nota

Per un esempio di questa procedura, vedere Esempio (Transact-SQL)più avanti in questa sezione.

L'istruzione DDL (Data Definition Language), ALTER SERVER CONFIGURATION, consente di avviare o arrestare la registrazione dei dati di diagnostica acquisiti dalla stored procedure sp_server_diagnostics (Transact-SQL) e di impostare i parametri di configurazione del log SQLDIAG, come il conteggio del rollover dei file di log, le dimensioni dei file di log e la posizione dei file. Per dettagli sulla sintassi, vedere Setting diagnostic log options.

Esempi (Transact-SQL)

Impostazione delle opzioni del log di diagnostica

Negli esempi inclusi in questa sezione viene illustrato come impostare i valori per l'opzione del log di diagnostica.

R. Avvio della registrazione diagnostica

Nell'esempio seguente viene avviata la registrazione dei dati di diagnostica.

ALTER SERVER CONFIGURATION SET DIAGNOSTICS LOG ON;
B. Arresto della registrazione diagnostica

Nell'esempio seguente viene arrestata la registrazione dei dati di diagnostica.

ALTER SERVER CONFIGURATION SET DIAGNOSTICS LOG OFF;
C. Definizione della posizione dei log di diagnostica

Nell'esempio seguente viene impostata la posizione dei log di diagnostica sul percorso di file specificato.

ALTER SERVER CONFIGURATION
SET DIAGNOSTICS LOG PATH = 'C:\logs';
D. Definizione della dimensione massima di ogni log di diagnostica

Nell'esempio seguente viene impostata su 10 megabyte la dimensione massima di ogni log di diagnostica.

ALTER SERVER CONFIGURATION
SET DIAGNOSTICS LOG MAX_SIZE = 10 MB;
E. Controllare se il log di diagnostica dell'istanza del cluster di failover è abilitato e la configurazione corrente.

Nell'esempio seguente viene usata la dmv sys.dm_os_server_diagnostics_log_configurations per controllare la configurazione corrente

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

Vedi anche