2

设置:我有一个非常大的SSIS包,它对许多不同的平面文件进行分类,并将它们放入适合文件定义的表格中...除了日期。日期以以下格式出现:"MM/dd/yyyy HH:mm:ss.ffffff." 当然,对于dbtimestamp,这需要转换为"yyyy-MM-dd HH:mm:ss.ffffff". 在任何给定的文件上,我至少有 2 个日期;创建和更新。在一些我有更多。

问题:在我解析的 26 个文件中,一个比另一个特别大。在某些情况下,它可以是 40+ MB。它以前似乎运行良好,但通过派生 3 个日期的派生列组件运行现在非常慢。解析约 90,600 行大约需要30 分钟。

我正在观察正在执行的数据流,瓶颈看起来非常像派生列。如果它们碰巧存在并且不存在,我会报告所有错误行,所以我知道它不会在行上窒息......我只是无法弄清楚什么需要这么长时间。CPU在执行时会达到 100%(不足为奇),但内存保持在 12% 的低位。

以下是每行 3 个日期中的每个日期发生的确切转换:

(DT_DBTIMESTAMP)(SUBSTRING(COLUMN,7,4) + "-" + SUBSTRING(COLUMN,1,2) 
 + "-" + SUBSTRING(COLUMN,4,2) + SUBSTRING(COLUMN,11,14))

有任何想法吗?

4

1 回答 1

1

由于进行了广泛的更改,我复制了数据库,并且索引没有正确带入。 这减慢了最大的桌子。删除派生步骤帮助我发现它更进一步,尽管监视数据流的 SSIS 执行使它看起来好像认为它是派生步骤。

我意识到这可能不会经常发生,但我会将线程留在这里,以防其他人遇到问题并像我一样错误地识别它!

于 2013-04-20T18:54:14.593 回答