在包中实现日志记录
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 中运行包时,验证阶段可能会创建 ExecutionID 元素与 BI Development Studio 对应的日志项。但是,执行阶段可能会创建 ExecutionID 元素与 dtshost.exe 对应的日志项。再比如,当运行包含“执行包”任务的包时,这些任务中的每个任务都会运行子包。这些子包创建的日志项所具有的 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 实用工具。
父日志记录选项
通常,任务以及 For 循环、Foreach 循环和序列容器的日志记录选项与包或父容器的日志记录选项匹配。在这种情况下,您可以将它们配置为继承其父容器的日志记录选项。例如,在包括执行 SQL 任务的 For 循环容器中,执行 SQL 任务可以使用已对 For 循环容器设置的日志记录选项。若要使用父日志记录选项,可以将容器的 LoggingMode 属性设置为 UseParentSetting。可以在 Business Intelligence Development Studio 的**“属性”窗口中设置此属性,也可以通过 SSIS 设计器中的“配置 SSIS 日志”**对话框设置此属性。
日志记录模板
在**“配置 SSIS 日志”**对话框中,还可以创建经常使用的日志记录配置并将其保存为模板,然后在多个包中使用这些模板。这样便于对多个包应用一致的日志记录策略,以及通过更新并应用模板来修改包的日志设置。这些模板存储为 XML 文件。
使用“配置 SSIS 日志”对话框配置日志记录
为包及其任务启用日志记录。可以在包级、容器级以及任务级进行日志记录。可以为包、容器和任务指定不同的日志。
选择日志提供程序并为包添加日志。可以仅在包级创建日志,任务或容器必须使用为包创建的日志之一。每个日志都与下列某个日志提供程序关联:文本文件、SQL Server Profiler、SQL Server、Windows 事件日志或 XML 文件。有关详细信息,请参阅如何在包中启用日志记录。
选择要在日志中捕获的事件以及每个事件的日志架构信息。有关详细信息,请参阅如何在容器中配置日志记录。
在包开发期间查看日志项
外部资源
- www.codeplex.com 上的 CodePlex 项目 DTLoggedExec Tool for Full and Detail Logging(用于完全和详细日志记录的 DTLoggedExec 工具)
|