SSIS-SSIS挂起时的最佳做法

时间:2019-01-08 14:53:27

标签: sql-server logging ssis etl ssis-2012

昨晚我的SSIS挂了。我不太确定为什么。今天早上,我根据输出结果确定挂起了哪个软件包。我正在查看sp_who2,但看不到任何在用户下运行的进程来运行作业。
我想知道当SSIS挂起时应该怎么做。它目前仍在运行,但似乎没有任何运行。

1 个答案:

答案 0 :(得分:2)

首先将程序包部署到SSISDB并从那里运行。如果尚未安装SSISDB目录,请参见here。此后,启用登录软件包并查看结果,特别是挂起软件包的阶段。执行此操作时,请寻找PipelineComponentTime事件,该事件指定每个组件在特定阶段花费的时间。可能感兴趣的几个阶段是ProcessInput阶段,在此阶段处理传入记录,在PrimeOutput阶段将数据放入缓冲区并在数据流中进一步发送。启用日志记录的概述如下。

  • 右键单击控制流上的任意位置,然后按Logging...
  • 在“容器”字段中选中包旁边的复选框以启用日志记录。 使用提供者类型字段选择您希望日志记录存储的位置。如果您将SSIS日志提供程序用于SQL Server,则将在使用的OLE DB连接管理器中将数据库设置为“初始目录”中创建SYSSSISLOG表。在“详细信息”窗格上,选择要记录的事件。选择这些选项后,单击Advanced>>按钮以设置将要记录的字段。
  • 接下来,检查要启用日志记录的组件。您需要对怀疑或已确认遇到延迟的所有组件执行此操作。如果任何数据流任务已启用日志记录,则前面提到的PipelineComponentTime事件将在这些事件的“详细信息”窗口下可用。
  • 要从SSIS目录监视软件包,请使用SSISDB DMV。执行此操作时,请确保在执行程序包时将“日志记录级别”至少设置为基本。有几种方法可以做到这一点,最简单的方法可能是通过GUI。在SSISDB的“执行软件包”窗口中执行软件包之前,可以在“高级”选项卡上找到“日志记录级别”字段。
  • 如果将程序包部署到SSISDB并作为作业在SQL Agent中运行,则可以从作业步骤中设置日志记录。打开“作业步骤属性”窗口,转到“配置”选项卡,然后进入“高级”选项卡,您将在其中看到“日志记录级别”字段。
  • SSISDB中有许多DMV,其中包含有关程序包配置和执行的详细信息。 catalog.event_messagesexecutable_statisticscatalog.operation_messages会有所帮助。要了解有关组件以及延迟发生的位置的更多信息,我建议使用catalog.execution_component_phases,这将要求记录级别为Performance或Verbose。
  • 如果性能根据程序包中使用的参数而有所不同,请从执行较慢的实例中使用execution_id来查询catalog.execution_parameter_values DMV,以查看在这些参数中设置了哪些参数处决。