以程式設計的方式啟用記錄
執行階段引擎提供 LogProvider 物件的集合,允許在封裝驗證和執行期間擷取事件特定資訊。LogProvider 物件可供 DtsContainer 物件使用,包括 TaskHost、Package、ForLoop 和 ForEachLoop 物件。在個別容器或是整個封裝上啟用記錄。
有好幾種類型的記錄提供者可供容器使用。這可提供以多種格式建立和儲存記錄資訊的彈性。在記錄中編列容器物件是兩個步驟的程序:首先啟用記錄,然後選取記錄提供者。該容器的 LoggingOptions 與 LoggingMode 屬性是用以指定記錄的事件並選取記錄提供者。
啟用記錄
在每個可以執行記錄的容器中所找到的 LoggingMode 屬性,可判斷容器的事件資訊是否記錄到事件記錄檔中。將會從 DTSLoggingMode 結構指派值給這個屬性,而且預設會從容器的父系繼承。如果容器是封裝,也因此沒有父系,則屬性會使用 UseParentSetting,而其預設值為 Disabled。
選取記錄提供者
在將 LoggingMode 屬性設定為 Enabled 之後,已將記錄提供者加入容器的 SelectedLogProviders 集合以完成該程序。SelectedLogProviders 集合可在 LoggingOptions 物件上使用,而且包含為容器所選取的記錄提供者。會呼叫 Add 方法以建立提供者並將它加入集合中。該方法接著會傳回加入集合的記錄提供者。每個提供者都有該提供者唯一的組態設定,而且這些屬性是使用 ConfigString 屬性來設定。
下列表格列出可用的記錄提供者、其說明及其 ConfigString 資訊。
提供者 |
說明 |
ConfigString 屬性 |
---|---|---|
SQL Server Profiler |
產生可能在 SQL Server Profiler 中擷取和檢視的 SQL 追蹤。此提供者的預設副檔名為 .trc。 |
不需要組態。 |
SQL Server |
將事件記錄項目寫入任何 SQL Server 資料庫中的 sysssislog 資料表中。 |
SQL Server 提供者需要指定連至資料庫的連接,還須指定目標資料庫名稱。 |
文字檔 |
將事件記錄項目以逗號分隔值 (CSV) 的格式寫入 ASCII 文字檔。此提供者的預設副檔名為 .log。 |
檔案連接管理員的名稱。 |
Windows 事件記錄檔 |
記錄到本機電腦上「應用程式」記錄中的標準 Windows 事件記錄檔。 |
不需要組態。 |
XML 檔案 |
將事件記錄檔項目寫入 XML 格式化的檔案。此提供者的預設副檔名為 .xml。 |
檔案連接管理員的名稱。 |
透過設定容器的 EventFilterKind 與 EventFilter 屬性,會將事件包括在事件記錄檔中或排除在外。EventFilterKind 結構包含兩個值:ExclusionFilter 與 InclusionFilter,它們指出加入 EventFilter 的事件是否包括在事件記錄檔中。接著會指派含有是篩選主旨之事件名稱的字串陣列給 EventFilter 屬性。
下列程式碼允許在封裝上記錄、將文字檔的記錄提供者加入 SelectedLogProviders 集合,並指定將事件清單包括在記錄輸出中。
範例
using System;
using Microsoft.SqlServer.Dts.Runtime;
namespace Microsoft.SqlServer.Dts.Samples
{
class Program
{
static void Main(string[] args)
{
Package p = new Package();
ConnectionManager loggingConnection = p.Connections.Add("FILE");
loggingConnection.ConnectionString = @"C:\SSISPackageLog.txt";
LogProvider provider = p.LogProviders.Add("DTS.LogProviderTextFile.2");
provider.ConfigString = loggingConnection.Name;
p.LoggingOptions.SelectedLogProviders.Add(provider);
p.LoggingOptions.EventFilterKind = DTSEventFilterKind.Inclusion;
p.LoggingOptions.EventFilter = new String[] { "OnPreExecute",
"OnPostExecute", "OnError", "OnWarning", "OnInformation" };
p.LoggingMode = DTSLoggingMode.Enabled;
// Add tasks and other objects to the package.
}
}
}
Imports Microsoft.SqlServer.Dts.Runtime
Module Module1
Sub Main()
Dim p As Package = New Package()
Dim loggingConnection As ConnectionManager = p.Connections.Add("FILE")
loggingConnection.ConnectionString = "C:\SSISPackageLog.txt"
Dim provider As LogProvider = p.LogProviders.Add("DTS.LogProviderTextFile.2")
provider.ConfigString = loggingConnection.Name
p.LoggingOptions.SelectedLogProviders.Add(provider)
p.LoggingOptions.EventFilterKind = DTSEventFilterKind.Inclusion
p.LoggingOptions.EventFilter = New String() {"OnPreExecute", _
"OnPostExecute", "OnError", "OnWarning", "OnInformation"}
p.LoggingMode = DTSLoggingMode.Enabled
' Add tasks and other objects to the package.
End Sub
End Module
|