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, percorso e formato del file, Sicurezza
Per visualizzare il log di diagnostica usando: SQL Server Management Studio, Transact-SQL
Per configurare le impostazioni del log di diagnostica usando: Transact-SQL
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:
Scegliere Apri dal menu File, selezionare File, quindi scegliere il file di log di diagnostica che si desidera visualizzare.
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 .
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.
È 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;