设置:我有一个非常大的 SSIS 包,可以对许多不同的平面文件进行排序,并将它们放入适合文件定义到T ...除了日期。日期的格式为:"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))
有什么想法吗?
答案 0 :(得分:1)
我复制了数据库,因为广泛的更改和索引没有正确使用。这减缓了最大的表格。删除派生步骤帮助我弄清楚它是下行,尽管监视数据流的SSIS执行使得它似乎,因为它是派生步骤。
我意识到这可能不会经常发生,但是我会把这个帖子留在这里以防万一其他人有问题并错误地识别它就像我一样!