我正在创建一个ssis包,它应该将数据从数据库传输到另一个数据库。但是,如果数据流任务需要花费太多时间来执行,我希望它停止并继续执行其他任务。
我已经尝试将CommandTimeout
属性设置为数据流源,但数据流任务不会停止运行。
答案 0 :(得分:1)
如果我设置commandtimeout属性,为什么不停止任务?
我猜测SSIS每次写入源组件的缓冲区时都会调用READ方法。每次调用read方法都会重置commandtimeout。这里有一些信息:
因此源需要足够慢才能在命令超时期间返回任何行。这听起来不适用于您的场景。
建议的替代方案是:
据我所知,源系统没有正确的索引,这使得读取过程变慢。听起来有多个表,您可以考虑单独读取它们并在目标服务器上暂存它们。这可以避免可能由JOIN产生的错误查询计划。另外,确保您写入的表不是瓶颈 - 删除索引,约束,添加tablock。