1

来自不同的 ETL 工具,我试图弄清楚如何在每个组件在 SSIS 中运行时获取(生产)统计信息。

例如,如果平面文件正在从具有高偏差的外部源读取(行/秒在不同时间发生巨大变化),我想知道该信息。

如果 SSIS 有一个显着的“慢点”(缓冲区填充/数据流受到影响),我也想知道该信息。

例如,使用来自 DMV 的 sproc,CPU 时间和 readIO/writeIO 也将是理想的(并且对于通过以一致/可测量的方法从 sproc 迁移到 SSIS 来显示改进的人们很有用)。

我问这个问题的原因是我在调试期间看到行通过 BIDS,但它可能无法反映生产中每个组件的实际行/秒。

一个人将如何为生产环境启用/内省/获取这些类型的统计信息(即使它受到的打击很小,但这些数字很重要)。

谢谢!

-达伦

4

2 回答 2

1

不确定它是否有帮助,但也许您可以尝试在您的包上配置日志记录并选择“SQL Server Profiler 的 SSIS 日志提供程序”

它显示了数据源处理开始和结束之间的一些信息

于 2012-04-17T11:13:38.197 回答
1

这在 SSIS 2005 中很难做到。当尝试从复杂 SSIS 包中的事件处理程序执行任务级日志记录时,我已经看到运行时引擎“停止”。一个想法:仅通过在源适配器之后和输出行的每个数据流路径上添加行计数转换来检测数据流。然后向每个数据流任务的 OnPreExecute 事件处理程序添加一个 Execute SQL 任务以记录执行的开始,并将另一个 Execute SQL 任务添加到相应的 OnPostExecute 事件处理程序。在 onPostExecute 逻辑中,存储数据流任务执行的行数和结束时间。我相信这将提供足够的指标来计算数据流管道的吞吐量。

希望这会有所帮助,安迪

于 2012-04-17T18:52:17.717 回答