在封裝中實作記錄
Integration Services 包含記錄功能,此功能會在發生執行階段事件時寫入記錄項目,也可以寫入自訂訊息。
Integration Services 支援不同的記錄提供者集,並提供建立自訂記錄提供者的能力。Integration Services 記錄提供者可以將記錄項目寫入文字檔、SQL Server Profiler、SQL Server、Windows 事件記錄檔或 XML 檔案。
記錄與封裝相關聯,並在封裝層級設定。封裝中的每個工作或容器都可將資訊記錄至任何封裝記錄檔中。您可以啟用封裝中工作和容器的記錄功能,即使該封裝本身未啟用記錄功能。例如,可以在「執行 SQL」工作上啟用記錄功能,而無需在父封裝上啟用記錄功能。封裝、容器或工作可以寫入多重記錄檔。您可以僅在封裝上啟用記錄功能,也可以選擇在封裝所包含的任何個別工作或容器上啟用記錄功能。
為了自訂事件或自訂訊息的記錄,Integration Services 提供通常記錄之資訊的結構描述,以用於併入記錄項目。Integration Services 記錄結構描述會定義可以記錄的資訊。您可以從記錄結構描述選擇每個記錄項目的元素。
封裝及其容器和工作不一定要記錄相同資訊,相同封裝或容器內的工作也可以記錄不同的資訊。例如,封裝可以在封裝啟動時記錄操作員資訊,一個工作可以記錄工作失敗的來源,而另一個工作可以在發生錯誤時記錄資訊。如果封裝及其容器和工作使用多重記錄檔,則相同的資訊會寫入所有記錄檔中。
您可以指定要記錄的事件和每個事件要記錄的資訊,以選取符合您需要的記錄層級。您可能會發現某些事件提供的資訊比其他事件更有用。例如,您可能只想記錄 PreExecute 事件的電腦和操作員名稱,而不是 Error 事件的所有可用資訊。
若要防止記錄檔使用大量的磁碟空間,或避免可能會降低效能的過度記錄,可以選取要記錄的特定事件和資訊項目,以限制記錄。例如,您可以設定記錄檔僅擷取每個錯誤的日期和電腦名稱。
在 [SSIS 設計師] 中,使用 [設定 SSIS 記錄] 對話方塊來定義記錄選項。
記錄結構描述
下表描述記錄結構描述中的元素。
元素 |
說明 |
---|---|
Computer |
發生記錄事件之電腦的名稱。 |
Operator |
啟動封裝之使用者的識別。 |
SourceName |
發生記錄事件之容器或工作的名稱。 |
SourceID |
封裝的唯一識別碼;「For 迴圈」、「Foreach 迴圈」或「時序」容器;或者發生記錄事件的工作。 |
ExecutionID |
封裝執行執行個體的 GUID。
附註
執行單一封裝可能會建立記錄項目,其中包含不同的 ExecutionID 元素值。例如,當您在 BI Development Studio 中執行封裝時,驗證階段可能會建立記錄項目,其中包含了對應到 BI Development Studio 的 ExecutionID 元素。但是,執行階段可能會建立記錄項目,其中包含了對應到 dtshost.exe 的 ExecutionID 元素。在另一個範例中,當您執行包含「執行封裝」工作的封裝時,每一個工作都會執行子封裝。這些子封裝可能會建立記錄項目,其中包含了與父封裝建立之記錄項目不同的 ExecutionID 元素。
|
MessageText |
與記錄項目相關聯的訊息。 |
DataBytes |
記錄項目特定的位元組陣列。此欄位的意義會因記錄項目的不同而不同。 |
下表描述記錄結構描述中,在 [設定 SSIS 記錄] 對話方塊的 [詳細資料] 索引標籤上沒有提供的三個額外元素。
元素 |
說明 |
---|---|
StartTime |
容器或工作開始執行的時間。 |
EndTime |
容器或工作停止執行的時間。 |
DataCode |
選擇性的整數值,一般會包含 DTSExecResult 列舉的值,指出執行容器或工作的結果:
|
記錄項目
Integration Services 支援預先定義事件上的記錄項目,並為許多 Integration Services 物件提供自訂記錄項目。在「SSIS 設計師」中的 [設定 SSIS 記錄] 對話方塊會列出這些事件和自訂記錄項目。
下表描述的預先定義事件可在發生執行階段事件時寫入記錄項目。這些記錄項目會套用至可執行檔、封裝和封裝所包含的工作和容器。記錄項目的名稱與引發並造成寫入記錄項目之執行階段事件的名稱相同。
事件 |
說明 |
---|---|
OnError |
發生錯誤時寫入記錄項目。 |
OnExecStatusChanged |
在可執行檔的執行狀態變更時寫入記錄項目。 |
OnInformation |
在驗證和執行可執行檔以報告資訊期間,寫入記錄項目。 |
OnPostExecute |
在可執行檔已完成執行後立即寫入記錄項目。 |
OnPostValidate |
在完成驗證可執行檔時寫入記錄項目。 |
OnPreExecute |
在可執行檔執行前立即寫入記錄項目。 |
OnPreValidate |
在啟動驗證可執行檔時寫入記錄項目。 |
OnProgress |
在可執行檔處理可量值進度時寫入記錄項目。 |
OnQueryCancel |
在工作處理期間任何可取消執行的時間點寫入記錄項目。 |
OnTaskFailed |
在工作失敗時寫入記錄項目。 |
OnVariableValueChanged |
在變數的值變更時寫入記錄項目。 |
OnWarning |
發生警告時寫入記錄項目。 |
PipelineComponentTime |
針對每個資料流程元件,寫入每個驗證和執行階段的記錄項目。記錄項目會指定每個階段的處理時間。 |
Diagnostic |
寫入提供診斷資訊的記錄項目。 例如,您可以在每次呼叫外部資料提供者前後記錄訊息。如需詳細資訊,請參閱<疑難排解封裝執行>。 |
封裝及許多工作都有可以啟用記錄功能的自訂記錄項目。例如,「傳送郵件」工作會提供 SendMailTaskBegin 自訂記錄項目,其會在「傳送郵件」工作開始執行時,但在工作傳送電子郵件訊息之前,記錄資訊。如需詳細資訊,請參閱<自訂訊息以進行記錄>。
區分封裝副本
記錄資料包含記錄項目所屬封裝的名稱和 GUID。如果您透過複製現有的封裝來建立新的封裝,將一併複製現有封裝的名稱和 GUID。因此,您可能會有兩套具有相同 GUID 和名稱的封裝,使您難以區分記錄資料中的封裝。
為了消除這種模糊不清的狀況,您應該更新這個新封裝的名稱和 GUID。在 Business Intelligence Development Studio 中,您可以在 [屬性] 視窗的 ID 屬性中重新產生 GUID,並更新 Name 屬性的值。您也可以使用程式設計方式或 dtutil 命令提示字元來變更 GUID 和名稱。如需詳細資訊,請參閱<設定封裝屬性>和<dtutil 公用程式 (SSIS 工具)>。
父記錄選項
通常,工作和「For 迴圈」、「Foreach 迴圈」和「時序」容器的記錄選項符合封裝或父容器的選項。在該情況下,可以設定它們從其父容器繼承記錄選項。例如,在包含「執行 SQL」工作的「For 迴圈」容器中,「執行 SQL」工作可以使用在「For 迴圈」容器上設定的記錄選項。若要使用父記錄選項,可將容器的 LoggingMode 屬性設為 UseParentSetting。可以在 Business Intelligence Development Studio 的 [屬性] 視窗中,或透過 [SSIS 設計師] 中的 [設定 SSIS 記錄] 對話方塊設定此屬性。
記錄範本
在 [設定 SSIS 記錄] 對話方塊中,還可以將常用的記錄組態建立和儲存為範本,然後在多個封裝中使用這些範本。這使得跨多個封裝套用一致的記錄策略,以及修改封裝的記錄設定變得很容易,只要更新後再套用範本即可。範本以 XML 檔案儲存。
若要使用 [設定 SSIS 記錄] 對話方塊設定記錄
啟用封裝及其工作的記錄功能。記錄可以發生在封裝、容器和工作層級上。您可以為封裝、容器和工作指定不同的記錄檔。
選取記錄提供者,並為封裝加入記錄。記錄檔僅可以在封裝層級建立,且工作或容器必須使用為封裝建立的記錄檔之一。每個記錄檔都與下列記錄提供者之一相關聯:文字檔、SQL Server Profiler、SQL Server、Windows 記錄檔或 XML 檔案。如需詳細資訊,請參閱<如何:啟用封裝中的記錄>。
選取事件,以及要在記錄檔中擷取之每個事件的記錄結構描述資訊。如需詳細資訊,請參閱<如何:使用已儲存的組態檔來設定記錄>。
若要在封裝開發期間檢視記錄項目
外部資源
CodePlex 上的範例:完整和詳細記錄的 DTLoggedExec 工具 (CodePlex 專案)。
Technet.microsoft.com 上的影片:SSIS 記錄分析器 (SQL Server 影片)。
|