记录包执行的日志 转

MicrosoftSQL ServerIntegration Services 包括日志记录功能。这些功能公开了用于日志记录的运行时事件,支持各种日志记录提供程序,并且提供有关日志记录的常见请求信息。信息可以记录到文本文件、SQL Server Profiler、SQL Server 数据库的sysssislog 表、Windows 事件日志以及 XML 文件中。有关详细信息,请参阅 Integration Services 日志提供程序

可以通过使用 SSIS 设计器(该设计器是 Integration Services 提供的用于创建包的图形工具)将包配置为使用日志记录,或以编程方式进行配置。有关如何启用包及其容器和任务以便进行日志记录的详细信息,请参阅在包中实现日志记录

在使用 dtexec 命令提示实用工具运行包时,还可以包括日志记录。有关支持日志记录的命令提示参数的详细信息,请参阅 dtexec 实用工具(SSIS 工具)

在包完成运行后,您可以查看包日志中的运行时信息。

下表介绍了 Integration Services 日志提供程序要向其写入信息的日志的位置。

日志提供程序

位置

文本文件

日志提供程序使用的文件连接管理器指定此文本文件的路径。

SQL Server Profiler

日志提供程序使用的文件连接管理器指定 SQL Server Profiler 所使用的文件的路径。

Windows 事件日志

Windows 事件查看器中的应用程序日志包含 Integration Services 日志信息。

SQL Server

日志提供程序使用的 OLE DB 连接管理器指定包含存储日志项的 sysssislog 表的 SQL Server 数据库。

XML 文件

日志提供程序使用的文件连接管理器指定 XML 文件的路径。



Integration Services 包将各种事件消息记入 Windows 应用程序事件日志。包会在包启动时、包停止时和特定问题出现时记录这些消息。

本主题提供有关包记入应用程序事件日志的常见事件消息的信息。默认情况下,即使未对包启用日志记录,包也会记录其中某些消息。但对于其他消息,只有对包启用了日志记录,包才会记录这些消息。无论包是在默认情况下还是在启用日志记录后记录这些消息,消息的事件源都是 SQLISPackage。

有关如何运行 Integration Services 包的常规信息,请参阅运行包

有关如何对正在运行的包进行故障排除的信息,请参阅包执行故障排除

运行 Integration Services 包时,包会通常会记录有关包的进度和状态的各种消息。下表列出了这些消息。

注意注意

即使未对包启用日志记录,包也会记录下表中的消息。

事件 ID

符号名称

文本

说明

12288

DTS_MSG_PACKAGESTART

包“”已开始运行。

包已开始运行。

12289

DTS_MSG_PACKAGESUCCESS

包“”已成功完成。

包已运行成功且不再运行。

12290

DTS_MSG_PACKAGECANCEL

包“%1!s!”已取消。

包已取消,因此不再运行。

12291

DTS_MSG_PACKAGEFAILURE

包“”已失败。

包无法成功运行,已停止运行。

默认情况下,在全新安装中,Integration Services 配置为不将有关包运行的某些事件记录到应用程序事件日志中。使用 SQL Server 2008 的数据收集器功能时,此设置可防止生成太多事件日志项。未记录的事件包括 EventID 12288“包已启动”和 EventID 12289“包已成功完成”。若要将这些事件记录到应用程序事件日志中,请打开注册表以进行编辑。然后在注册表中,找到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\SSIS 节点,并将 LogPackageExecutionToEventLog 设置的 DWORD 值从 0 更改为 1。不过,在升级安装中,Integration Services 配置为记录这两个事件。若要禁用记录功能,请将 LogPackageExecutionToEventLog 设置的值从 1 更改为 0。

如果已对包启用日志记录,应用程序事件日志将是 Integration Services 包中可选的日志记录功能所支持的目标之一。有关详细信息,请参阅记录包执行的日志

如果已对包启用日志记录而且日志位置为应用程序事件日志,则包将记录与以下信息相关的项:

  • 有关包运行时所处的阶段的消息。

  • 有关包运行时发生的特定事件的消息。

有关包执行阶段的消息

事件 ID

符号名称

文本

说明

12544

DTS_MSG_EVENTLOGENTRY

事件名称: %1%r 消息: %9%r 操作员: %2%r 源名称: %3%r 源 ID: %4%r 执行 ID: %5%r 开始时间: %6%r 结束时间: %7%r 数据代码: %8

将包日志记录配置为记入应用程序事件日志时,各种消息都会使用这种通用格式。

12556

DTS_MSG_EVENTLOGENTRY_PACKAGESTART

事件名称: %1%r 消息: %9%r 操作员: %2%r 源名称: %3%r 源 ID: %4%r 执行 ID: %5%r 开始时间: %6%r 结束时间: %7%r 数据代码: %8

包已启动。

12547

DTS_MSG_EVENTLOGENTRY_PREVALIDATE

事件名称: %1%r 消息: %9%r 操作员: %2%r 源名称: %3%r 源 ID: %4%r 执行 ID: %5%r 开始时间: %6%r 结束时间: %7%r 数据代码: %8

对象验证即将开始。

12548

DTS_MSG_EVENTLOGENTRY_POSTVALIDATE

事件名称: %1%r 消息: %9%r 操作员: %2%r 源名称: %3%r 源 ID: %4%r 执行 ID: %5%r 开始时间: %6%r 结束时间: %7%r 数据代码: %8

对象验证已完成。

12552

DTS_MSG_EVENTLOGENTRY_PROGRESS

事件名称: %1%r 消息: %9%r 操作员: %2%r 源名称: %3%r 源 ID: %4%r 执行 ID: %5%r 开始时间: %6%r 结束时间: %7%r 数据代码: %8

此通用消息用于报告包的进度。

12546

DTS_MSG_EVENTLOGENTRY_POSTEXECUTE

事件名称: %1%r 消息: %9%r 操作员: %2%r 源名称: %3%r 源 ID: %4%r 执行 ID: %5%r 开始时间: %6%r 结束时间: %7%r 数据代码: %8

对象已完成其工作。

12557

DTS_MSG_EVENTLOGENTRY_PACKAGEEND

事件名称: %1%r 消息: %9%r 操作员: %2%r 源名称: %3%r 源 ID: %4%r 执行 ID: %5%r 开始时间: %6%r 结束时间: %7%r 数据代码: %8

包已经完成运行。

有关发生的事件的消息

下表仅列出属于事件结果的部分消息。有关 Integration Services 使用的错误、警告和信息性消息的更全面的列表,请参阅 SSIS 错误和消息参考

事件 ID

符号名称

文本

说明

12251

DTS_MSG_EVENTLOGENTRY_TASKFAILED

事件名称: %1%r 消息: %9%r 操作员: %2%r 源名称: %3%r 源 ID: %4%r 执行 ID: %5%r 开始时间: %6%r 结束时间: %7%r 数据代码: %8

任务失败。

12250

DTS_MSG_EVENTLOGENTRY_ERROR

事件名称: %1%r 消息: %9%r 操作员: %2%r 源名称: %3%r 源 ID: %4%r 执行 ID: %5%r 开始时间: %6%r 结束时间: %7%r 数据代码: %8

此消息用于报告产生了一个错误。

12249

DTS_MSG_EVENTLOGENTRY_WARNING

事件名称: %1%r 消息: %9%r 操作员: %2%r 源名称: %3%r 源 ID: %4%r 执行 ID: %5%r 开始时间: %6%r 结束时间: %7%r 数据代码: %8

此消息用于报告产生了一个警告。

12258

DTS_MSG_EVENTLOGENTRY_INFORMATION

事件名称: %1%r 消息: %9%r 操作员: %2%r 源名称: %3%r 源 ID: %4%r 执行 ID: %5%r 开始时间: %6%r 结束时间: %7%r 数据代码: %8

此消息用于报告与错误或警告无关的信息。





了解由 Integration Services 服务记录的事件

Integration Services 服务将各种消息记入 Windows 应用程序事件日志。该服务会在服务启动时、服务停止时和特定问题出现时记录这些消息。

本主题提供有关该服务记入应用程序事件日志的常见事件消息的信息。本主题中说明的 Integration Services 服务记录的所有消息均以 SQLISService 为事件源。

有关 Integration Services 服务的常规信息,请参阅 管理 Integration Services

有关如何对 Integration Services 服务进行故障排除的信息,请参阅 Integration Services 服务故障排除

当您选择安装 Integration Services 时,系统将安装并启动 Integration Services 服务,且其启动类型将设置为自动。

事件 ID

符号名称

文本

说明

256

DTS_MSG_SERVER_STARTING

正在启动 MicrosoftSSIS 服务。

服务即将启动。

257

DTS_MSG_SERVER_STARTED

MicrosoftSSIS 服务已启动。

服务已启动。

260

DTS_MSG_SERVER_START_FAILED

MicrosoftSSIS 服务启动失败。%n错误: %1

服务未能启动。服务未能启动可能是由于安装已损坏或服务帐户不适当。

258

DTS_MSG_SERVER_STOPPING

正在停止 MicrosoftSSIS 服务。%n%n退出时停止所有正在运行的包: %1

服务正在停止,如果将服务配置为执行此操作,则所有正在运行的包都会停止。可以在配置文件中设置 True 或 False 值来决定服务是否在自身停止时停止正在运行的包。此事件的消息包括这项设置的值。

259

DTS_MSG_SERVER_STOPPED

MicrosoftSSIS 服务已停止。%n服务器版本 %1

服务已停止。

Integration Services 服务的设置存储在一个 XML 文件中,您可以修改该文件。有关详细信息,请参阅配置 Integration Services (SSIS) 服务

事件 ID

符号名称

文本

说明

274

DTS_MSG_SERVER_MISSING_CONFIG_REG

MicrosoftSSIS 服务: %n指定配置文件的注册表设置不存在。%n正尝试加载默认的配置文件。

包含配置文件路径的注册表项不存在或为空。

272

DTS_MSG_SERVER_MISSING_CONFIG

MicrosoftSSIS 服务配置文件不存在。%n正在使用默认设置加载。

在指定位置不存在配置文件自身。

273

DTS_MSG_SERVER_BAD_CONFIG

MicrosoftSSIS 服务配置文件不正确。%n读取配置文件 %1 时出错%n%n正在使用默认设置加载服务器。

无法读取配置文件或配置文件无效。此错误可能是由文件中的 XML 语法错误引起的。

事件 ID

符号名称

文本

说明

336

DTS_MSG_SERVER_STOPPING_PACKAGE

MicrosoftSSIS 服务: 正在停止运行中的包。%n包实例 ID: %1%n包 ID: %2%n包名称: %3%n包说明: %4%n包

服务正在尝试停止运行中的包。可以在 Management Studio 中监视和停止正在运行的包。有关如何在 Management Studio 中管理包的信息,请参阅管理包




在包中实现日志记录

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 枚举值的可选整数值,它指示运行该容器或任务的结果:

  • 0 – 成功

  • 1 – 失败

  • 2 – 已完成

  • 3 – 已取消

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 日志”对话框配置日志记录

  1. 为包及其任务启用日志记录。可以在包级、容器级以及任务级进行日志记录。可以为包、容器和任务指定不同的日志。

  2. 选择日志提供程序并为包添加日志。可以仅在包级创建日志,任务或容器必须使用为包创建的日志之一。每个日志都与下列某个日志提供程序关联:文本文件、SQL Server Profiler、SQL Server、Windows 事件日志或 XML 文件。有关详细信息,请参阅如何在包中启用日志记录

  3. 选择要在日志中捕获的事件以及每个事件的日志架构信息。有关详细信息,请参阅如何使用保存的配置文件配置日志记录

在包开发期间查看日志项


posted @ 2011-12-06 14:06  野三坡  阅读(396)  评论(0编辑  收藏  举报