共用方式為


資料收集器記錄

資料收集器會針對每一個收集組和它的收集封裝來擷取及記錄不同種類的資訊。寫入 msdb 資料表的這些資訊提供了有關此收集組的目前狀態與封裝執行結果的資訊。這些記錄資料表也會提供有關每一個收集組與其封裝的統計資訊。下列資訊種類可用來監視及分析資料收集:

  • 目前正在執行的收集組。

  • 收集組執行的記錄。

  • 如果是給定的收集組,則為該收集作業中執行之封裝的階層。

  • 如果是每一個封裝,則為開始和停止時間、持續時間、完成狀態及處理的資料列數。

  • 如果收集組執行失敗,則為造成失敗的封裝。

  • 如果封裝執行失敗,則為該封裝中失敗的元件以及錯誤訊息。

  • 如果是每一個封裝,則為該封裝針對每一次執行所記錄的記錄事件順序。

資料收集器記錄中的 SSIS 角色

資料收集器會藉由使用預存程序和 SQL Server 2008 Integration Services (SSIS) 工作執行與記錄功能來實作記錄。這些功能會在執行階段事件發生時,為記錄提供者建立摘要和詳細記錄項目。如需詳細資訊,請參閱<在封裝中實作記錄>。

記錄的事件會針對程式執行的所有階段提供參考點。每一筆事件記錄都會對應到執行工作所使用之封裝的執行識別碼。資料收集器會將這些識別碼對應到特定的封裝,以便進行資料收集和上載。

收集組和封裝記錄

資料收集器記錄的高層架構和資料處理如下:

  • 收集組資訊 (在執行階段由資料收集器所提供) 會使用預存程序儲存到資料收集器資料表中。每一筆記錄都有提供 log_id,這是用來參考資料表項目,以及將封裝對應到 SSIS 執行識別碼。

  • 每一個封裝開始和結束執行時,都會記錄封裝資訊。執行記錄的方式是在每一個封裝的控制流程開始和結束時執行 Transact-SQL 工作。

    • 當此封裝執行時,定期更新和統計更新是由資料收集器所進行。每一個封裝都有全域錯誤處理常式工作 (使用 SSIS 封裝事件所實作),這項工作會記錄錯誤事件。其作法是將 SSIS 的「執行 SQL 工作」放到控制流程中,以提供所需的必要事件記錄。如需詳細資訊,請參閱<執行 SQL 工作>和<控制流程元素>。

    • SSIS 所產生的事件會使用 dbo.sp_ssis_addlogentry 預存程序記錄到 SSIS 定義的資料表 dbo. sysssislog 中。

  • 當封裝結束時,會記錄成功或失敗事件。

  • 當收集組停止時,會記錄這些資訊。如同封裝一樣,也會記錄成功或失敗事件。

資料收集器所產生的資料會儲存在 dbo.syscollector_execution_log_internal 資料表中,此資料表會聯結到 dbo.sysssislog。這樣做會提供收集組執行的完整檢視表。這些資料表在以下章節中有更詳細的說明。

記錄資料表

記錄資料表和其資料行列於下表中。本主題稍後的「存取及檢視記錄資料」一節將描述您可用來取得與記錄資料表之資料類型和內容有關之詳細資料的函數和檢視表。

資料表名稱

描述

syscollector_execution_log_internal

用來儲存執行資訊的資料收集器資料表,它有以下的資料行:

  • log_id

  • parent_log_id

  • collection_set_id

  • collection_item_id

  • start_time

  • last_iteration_time

  • finish_time

  • runtime_execution_mode

  • status

  • operator

  • package_id

  • package_execution_id

  • failure_message

syscollector_execution_stats_internal

用來儲存統計資訊的資料收集器資料表,它有以下的資料行:

  • log_id

  • task_name

  • execution_row_count_in

  • execution_row_count_out

  • execution_row_count_errors

  • execution_time_ms

  • log_time

sysssislog

事件資訊的 SSIS 定義資料表,例如收集組或封裝的啟動及警告或錯誤。如需詳細資訊,請參閱<sysssislog (Transact-SQL)>。

重要注意事項重要事項

請勿修改記錄資料表中的資料。必須依照預存程序所強制執行的特定方式來插入、更新和刪除這些資料表中的資料。資料表名稱和定義可以在執行階段進行變更,在您更新應用程式時進行變更,也可能在未來版本中變更。請勿直接使用資料表,而是要使用資料收集器所提供之記載的預存程序和檢視表,以存取執行個體和應用程式資料。

記錄保留

收集組記錄所保存的時間長度,與針對收集組保存管理資料倉儲資料的時間長度一樣。這是由保留期限所定義,您可以針對每一個收集組來設定此保留期限。當保留期限到期時,SQL Server Agent 作業會清除此記錄中的資料。

記錄層級

目前提供了三個記錄層級來處理可能發生的不同收集狀況。如此可確保當您需要時,將會有收集組或封裝疑難排解所需的資料。您可以根據您的記錄需求,為每一個收集組設定不同的記錄層級。

下表描述可用的記錄選項。

層級

描述

0

預設記錄層級。記錄執行資訊和下列 SSIS 事件:

  • 啟動或停止收集組

  • 啟動或停止封裝

  • 錯誤資訊

1

結合層級 0 記錄以及下列事件:

  • 執行統計資料

  • 持續執行的收集進度

  • SSIS 的警告事件

2

結合層級 1 記錄以及詳細的 SSIS 事件。

根據預設,記錄層級為 0。層級 0 可用來避免過多記錄訊息,例如層級 1 記錄所產生的警告事件。這些警告事件可能包括使用者無法更正的 SSIS 效能建議事項。

層級 2 則提供可用來進行進階疑難排解的其他事件資訊。

SSIS 事件

每個資料收集器封裝都會使用 SQL Server 事件提供者。下表所描述的事件會進行記錄並且可供檢視。

事件名稱

記錄層級

描述

PackageBegin

0

一定會產生的標準事件。您無法停用這個事件。

PackageEnd

0

一定會產生的標準事件。您無法停用這個事件。

OnError

0

錯誤事件。

OnWarning

1

警告事件。

PipelineBufferLeak

2

提供在緩衝區管理員停止之後,使緩衝區保持運作之任何元件的相關資訊。如果緩衝區仍然在作用中,就不會釋放緩衝區資源,並可能造成記憶體遺漏的問題。這個記錄項目會提供元件的名稱和緩衝區的識別碼。

PipelineExecutionPlan

2

報告資料流程的執行計畫。執行計畫會提供有關如何將緩衝區傳送至元件的資訊,這項資訊會結合 PipelineExecutionTrees 記錄項目,以描述資料流程工作內所發生的情況。

PipelineExecutionTrees

2

報告資料流程中的配置執行樹狀目錄。資料流程引擎的排程器會使用這些樹狀目錄來建立資料流程的執行計畫。

PipelineInitialization

2

提供有關工作的初始化資訊。這項資訊包括用於暫時儲存二進位大型物件 (BLOB) 資料的目錄、預設緩衝區大小,以及緩衝區中的資料列數目。根據資料流程工作的組態而定,可能會寫入多個記錄項目。

ExecuteSQLExecutingQuery

2

提供 SQL 陳述式執行階段的相關資訊。寫入記錄項目的時機包括工作連接到資料庫時、在工作開始準備 SQL 陳述式時,以及在 SQL 陳述式執行完成之後。準備階段的記錄項目包含工作所使用的 SQL 陳述式。

FileSystemOperation

2

報告工作執行的作業。記錄項目會在檔案系統作業啟動時寫入,其中包含有關來源和目的地的資訊。

ExecuteProcessExecutingProcess

2

提供將工作設定為執行之相關的程序資訊。

將會寫入兩個記錄項目。其中一個包含工作所執行之可執行檔的名稱和位置的相關資訊,另一個項目則記錄可執行檔的結束。

存取及檢視記錄資料

您可以使用所提供的函數和檢視表,以程式設計方式存取及檢視資料。另外,您也可以使用 Management Studio [物件總管] 中的 [記錄檔檢視器] 來檢視記錄。如需詳細資訊,請參閱<如何:檢視收集組記錄>。

下表描述可用來存取記錄資料的函數和檢視。

名稱

描述

fn_syscollector_get_execution_details (Transact-SQL)

針對要求之 log_id 和其所有相依記錄項目傳回與收集組和封裝記錄有關的詳細資訊。

fn_syscollector_get_execution_stats (Transact-SQL)

傳回要求之 log_id 的一組統計資料。這些統計資料是從 syscollector_execution_stats 檢視表中的項目計算而來。

syscollector_execution_log (Transact-SQL)

提供 syscollector_execution_log_internal 資料表的檢視表。

syscollector_execution_log_full (Transact-SQL)

提供 syscollector_execution_log_internal 資料表的詳細檢視表,並顯示階層中的記錄項目,從最上層的收集記錄項目開始,一直到收集組執行作業中執行的所有封裝為止。

syscollector_execution_stats (Transact-SQL)

提供 syscollector_execution_stats_internal 資料表的 1:1 檢視表。

變更記錄

更新的內容

在「記錄資料表」一節中,更新 syscollector_execution_log_internal 資料表的資料行。

在「記錄層級」一節中,更正預設記錄層級,讓它現在成為 "0"。