SSIS - SSIS 挂起时的最佳实践

yoe*_*sef 1 sql-server logging ssis etl ssis-2012

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

use*_*l89 5

首先将包部署到 SSISDB 并从那里运行它。如果您尚未安装 SSISDB 目录,可以在此处找到更多相关信息。此后,启用包中的日志记录并查看结果,特别是包挂起的阶段。执行此操作时,查找PipelineComponentTime指定每个组件在特定阶段花费多长时间的事件。可能感兴趣的几个阶段是ProcessInput 处理传入记录的阶段,以及PrimeOutput将数据放入缓冲区并沿着数据流进一步发送的阶段。启用日志记录的概述如下。

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