sys.fn_xe_file_target_read_file (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體
讀取擴充事件異步檔案目標所建立的檔案。 系統會以 XML 格式針對每個資料列傳回一個事件。
「擴充事件 event_file
」目標會以無法讀取的二進位格式儲存它所接收的數據。 使用 sys.fn_xe_file_target_read_file
函式讀取檔案的內容.xel
。 這些檔案也可以從 Management Studio 讀取。 如需逐步解說,請參閱 快速入門:擴充事件。
語法
sys.fn_xe_file_target_read_file ( path , mdpath , initial_file_name , initial_offset )
引數
path
要讀取之檔案的路徑。 path 可以包含通配符,並包含檔名。 path 是 nvarchar(260), 沒有預設值。 在 Azure SQL 資料庫 的內容中,此值是 Azure 儲存體 中檔案的 HTTP URL。
mdpath
對應至 path 自變數所指定檔案或檔案之元數據檔案的路徑。 mdpath 是 nvarchar(260), 沒有預設值。
在 SQL Server 2012 (11.x) 和更新版本中,您不需要此參數。 針對舊版 SQL Server 中產生的記錄檔,保留回溯相容性。 在 SQL Server 2016 (13.x) 和更新版本中,此參數可以指定為 NULL
,因為 .xem
不再使用檔案。
initial_file_name
要從 路徑讀取的第一個檔案。 initial_file_name為 nvarchar(260),沒有預設值。 如果 NULL
指定為 自變數,則會讀取路徑中找到的所有檔案。
注意
initial_file_name和initial_offset都是配對的自變數。 如果您為任一自變數指定值,則必須為另一個自變數指定值。
initial_offset
用來指定先前讀取的最後一個位移,並將所有事件略過到位移(含)。 事件列舉會在指定的位移之後開始。 initial_offset是 bigint。 如果 NULL
指定為 自變數,則會讀取整個檔案。
傳回的資料表
資料行名稱 | 資料類型 | 描述 |
---|---|---|
module_guid |
uniqueidentifier | 事件模組 GUID。 不可為 Null。 |
package_guid |
uniqueidentifier | 事件封裝 GUID。 不可為 Null。 |
object_name |
nvarchar(256) | 事件的名稱。 不可為 Null。 |
event_data |
nvarchar(max) | 事件內容,以 XML 格式表示。 不可為 Null。 |
file_name |
nvarchar(260) | 包含事件的檔名。 不可為 Null。 |
file_offset |
bigint | 包含事件的檔案中區塊的位移。 不可為 Null。 |
timestamp_utc |
datetime2(7) | 事件的日期和時間(UTC 時區)。 不可為 Null。 適用於:SQL Server 2017 (14.x) 和更新版本,以及 Azure SQL Database。 |
備註
在 Management Studio 中執行 sys.fn_xe_file_target_read_file
來讀取大型結果集可能會導致錯誤。 使用結果到檔案模式 (在 SQL Server Management Studio 中,Ctrl+Shift+F) 將大型結果集匯出至人類可讀取的檔案,改為使用另一個工具讀取檔案。
SQL Server 2008 (10.0.x) 和 SQL Server 2008 R2 (10.50.x) 接受以 XEL 和 XEM 格式產生的追蹤結果。 SQL Server 2012 (11.x) 擴充事件僅支援 XEL 格式的追蹤結果。 建議您使用Management Studio以 XEL 格式讀取追蹤結果。
Azure SQL
在 Azure SQL 受控執行個體 或 Azure SQL 資料庫 中,將檔案儲存.xel
在 Azure Blob 儲存體。 您可以使用 sys.fn_xe_file_target_read_file
從您自己建立的擴充事件工作階段中讀取,並儲存在 Azure Blob 儲存體中。 如需範例逐步解說,請檢閱在 Azure 儲存體 中使用event_file目標建立事件會話。
如果您指定本機檔案系統的通配符和/或路徑,您會收到類似下列的錯誤訊息:
Msg 40538, Level 16, State 3, Line 15
A valid URL beginning with 'https://' is required as value for any filepath specified.
權限
在 SQL Server 2019 (15.x) 和舊版中,需要 VIEW SERVER STATE
伺服器的許可權。
在 SQL Server 2022 (16.x) 和更新版本中,需要 VIEW SERVER PERFORMANCE STATE
伺服器上的許可權。
範例
A. 從檔案目標擷取數據
針對 SQL Server 2014 (12.x) 和舊版,下列範例會從所有檔案取得所有數據列,包括 .xel
和 .xem
檔案。 在此範例中,檔案目標和元檔位於 資料夾中的 C:\traces\
追蹤資料夾中。
SELECT *
FROM sys.fn_xe_file_target_read_file('C:\traces\*.xel', 'C:\traces\metafile.xem', NULL, NULL);
在 SQL Server 2016 (13.x) 和更新版本中,下列範例會擷取預設資料夾中所有 .xel
檔案內的事件。 預設位置位於 \MSSQL\Log
實例的安裝資料夾中。
SELECT *
FROM sys.fn_xe_file_target_read_file('*.xel', NULL, NULL, NULL);
在 SQL Server 2017 (14.x) 和更新版本中,下列範例只會從內建system_health會話擷取過去一天的數據。 system_health 工作階段是預設包含於 SQL Server 的擴充事件工作階段。 如需詳細資訊,請參閱使用 system_health 工作階段。
SELECT *
FROM sys.fn_xe_file_target_read_file('system_health*.xel', NULL, NULL, NULL)
WHERE CAST(timestamp_utc AS DATETIME2(7)) > DATEADD(DAY, -1, GETUTCDATE());