在資料流程元件中記錄和定義記錄項目
適用於:SQL Server Azure Data Factory 中的 SSIS Integration Runtime
自訂資料流程元件可以使用 PostLogMessage 介面的 IDTSComponentMetaData100 方法,將訊息公佈到現有的記錄項目中。 它們也可以使用 FireInformation 介面的 IDTSComponentMetaData100 方法或是類似方法,將資訊呈現給使用者。 但是,這個方法會產生引發及處理其他事件的額外負擔,並強制使用者詳查詳細的參考用訊息,以找出他們可能感興趣的訊息。 您可以使用自訂記錄項目,如底下所述,將清楚標示的自訂記錄資訊提供給元件的使用者。
註冊及使用自訂記錄項目
註冊自訂記錄項目
若要註冊自訂記錄項目以供元件使用,請覆寫 RegisterLogEntries 基底類別的 PipelineComponent 方法。 下列範例會註冊自訂記錄項目,並提供名稱和描述。
using Microsoft.SqlServer.Dts.Runtime;
...
private const string MyLogEntryName = "My Custom Component Log Entry";
private const string MyLogEntryDescription = "Log entry from My Custom Component ";
...
public override void RegisterLogEntries()
{
this.LogEntryInfos.Add(MyLogEntryName,
MyLogEntryDescription,
Microsoft.SqlServer.Dts.Runtime.Wrapper.DTSLogEntryFrequency.DTSLEF_CONSISTENT);
}
Imports Microsoft.SqlServer.Dts.Runtime
...
Private Const MyLogEntryName As String = "My Custom Component Log Entry"
Private Const MyLogEntryDescription As String = "Log entry from My Custom Component "
...
Public Overrides Sub RegisterLogEntries()
Me.LogEntryInfos.Add(MyLogEntryName, _
MyLogEntryDescription, _
Microsoft.SqlServer.Dts.Runtime.Wrapper.DTSLogEntryFrequency.DTSLEF_CONSISTENT)
End Sub
DTSLogEntryFrequency 列舉會將有關此事件將要記錄之頻率的提示提供給執行階段:
DTSLEF_OCCASIONAL:有時記錄事件,而不是每次執行時都記錄。
DTSLEF_CONSISTENT:每次執行時,事件都會記錄固定次數。
DTSLEF_PROPORTIONAL:事件記錄的次數與完成的工作量成比例。
以上範例使用 DTSLEF_CONSISTENT,因為此元件預期每次執行都會記錄項目一次。
在註冊自訂記錄項目以及將自訂元件的執行個體新增至資料流程設計工具介面之後,設計工具中的 [記錄] 對話方塊會顯示新的記錄項目,其中 "My Custom Component Log Entry" 名稱會出現在可用的記錄項目清單中。
記錄到自訂記錄項目
在註冊自訂記錄項目以後,此元件現在可以記錄自訂訊息。 底下範例會在 PreExecute 方法期間撰寫自訂記錄項目,其中包含此元件所使用之 SQL 陳述式的文字。
public override void PreExecute()
{
DateTime now = DateTime.Now;
byte[] additionalData = null;
this.ComponentMetaData.PostLogMessage(MyLogEntryName,
this.ComponentMetaData.Name,
"Command Sent was: " + myCommand.CommandText,
now, now, 0, ref additionalData);
}
Public Overrides Sub PreExecute()
Dim now As DateTime = DateTime.Now
Dim additionalData As Byte() = Nothing
Me.ComponentMetaData.PostLogMessage(MyLogEntryName, _
Me.ComponentMetaData.Name, _
"Command Sent was: " + myCommand.CommandText, _
now, now, 0, additionalData)
End Sub
現在,若使用者先選取 [記錄] 對話方塊中的 [我的自訂元件記錄項目],然後執行此封裝,記錄中將會包含明確標示有 “User::My Custom Component Log Entry” 的項目。這個新記錄項目包含 SQL 陳述式的文字、時間戳記,以及開發人員記錄的任何其他資料。