檢視及閱讀容錯移轉叢集執行個體診斷記錄檔
適用於:SQL Server
SQL Server 資源 DLL 的所有重大錯誤和警告事件都會寫入 Windows 事件記錄檔。 SQL Server 特定之診斷資訊的執行中記錄是由 sp_server_diagnostics (Transact-SQL) 系統預存程序所擷取,且會寫入 SQL Server 容錯移轉叢集診斷 (也稱為 SQLDIAG 記錄) 記錄檔。
開始之前:檔案名稱、位置和格式、安全性
使用下列項目,檢視診斷記錄:SQL Server Management Studio、Transact-SQL
使用下列項目,設定診斷記錄設定:Transact-SQL
開始之前
檔案名稱、位置和格式
依預設,SQLDIAG 會儲存在 SQL Server 執行個體目錄的本機 LOG 資料夾下方,例如,Always On 容錯移轉叢集執行個體 (FCI) 主控節點的 'C\Program Files\Microsoft SQL Server\MSSQL13.<InstanceName>\MSSQL\LOG'。 每個 SQLDIAG 記錄檔的大小上限固定為 100 MB。 電腦上會儲存十個此類型的記錄檔,再將它們回收以用於新的記錄檔。 檔案名稱的格式如下:MACHINE_SQLINSTANCE_SQLDIAG_0_xxxxxxxxxxxxxxxxx.xel
,其中最後一個部分 'xxxxxxxx' 是自動產生的數字。 例如,針對預設執行個體,檔案名稱會是 NODE1_MSSQLSERVER_SQLDIAG_0_133177967257760000.xel
,而針對具名執行個體,名稱則是 NODE1_SQL2019INST_SQLDIAG_0_133177967257760000.xel
記錄檔會使用擴充的事件檔案格式。 sys.fn_xe_file_target_read_file
系統函數可用來讀取擴充事件所建立的檔案,並將它們顯示為結果集。 系統會以 XML 格式針對每個資料列傳回一個事件。 如需詳細資訊,請參閱 sys.fn_xe_file_target_read_file (Transact-SQL)。
安全性
權限
需要有 VIEW SERVER STATE 權限才能執行 fn_xe_file_target_read_file。
以管理員的身分開啟 SQL Server Management Studio
使用 SQL Server Management Studio
若要檢視診斷記錄檔:
從 [檔案] 功能表中,依序選取 [開啟] 和 [檔案] ,然後選擇想要檢視的診斷記錄檔。
事件在右窗格中會顯示為資料列,而且依預設只會顯示 [name] 和 [timestamp] 這兩個資料行。
這也會啟動 [ExtendedEvents] 功能表。
若要查看其他資料行,請前往 [ExtendedEvents] 功能表,並選取 [選擇資料行] 。
隨即開啟對話方塊,內含可讓您選取資料行進行顯示的可用資料行。
您可以使用 [ExtendedEvents] 功能表並選取 [篩選] 選項,來篩選和排序事件資料。
使用 Transact-SQL 檢視診斷記錄檔
若要檢視診斷記錄檔:
若要檢視 SQLDIAG 記錄檔中的所有記錄項目,請使用下列查詢:
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;
注意
您可以篩選特定元件或使用 WHERE 子句之狀態的結果。
使用 Transact-SQL 設定診斷記錄屬性
若要設定診斷記錄屬性:
注意
如需這個程序的範例,請參閱本節稍後的 範例 (Transact-SQL)。
使用資料定義語言 (DDL) 陳述式 ALTER SERVER CONFIGURATION,您可以啟動或停止記錄 sp_server_diagnostics (Transact-SQL) 程序所擷取的診斷資料,並設定 SQLDIAG 記錄組態參數,例如記錄檔案換用計數、記錄檔大小和檔案位置。 如需語法的詳細資料,請參閱 Setting diagnostic log options。
範例 (Transact-SQL)
設定診斷記錄選項
本節的範例示範如何設定診斷記錄檔選項的值。
A. 啟動診斷記錄
下列範例會啟動診斷資料記錄。
ALTER SERVER CONFIGURATION SET DIAGNOSTICS LOG ON;
B. 停止診斷記錄
下列範例會停止診斷資料記錄。
ALTER SERVER CONFIGURATION SET DIAGNOSTICS LOG OFF;
C. 指定診斷記錄的位置
下列範例會將診斷記錄檔的位置設定為指定的檔案路徑。
ALTER SERVER CONFIGURATION
SET DIAGNOSTICS LOG PATH = 'C:\logs';
D. 指定每個診斷記錄的大小上限
下列範例會將每個診斷記錄檔的大小上限設為 10 MB。
ALTER SERVER CONFIGURATION
SET DIAGNOSTICS LOG MAX_SIZE = 10 MB;
E. 檢查容錯移轉叢集執行個體診斷記錄是否已啟用以及目前的組態。
下列範例會使用 dmv sys.dm_os_server_diagnostics_log_configurations 以檢查目前的組態
SELECT is_enabled, [path], max_size, max_files
FROM sys.dm_os_server_diagnostics_log_configurations;