Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssis 如果数据流任务花费太多时间,SSI将跳过该任务_Ssis - Fatal编程技术网

Ssis 如果数据流任务花费太多时间,SSI将跳过该任务

Ssis 如果数据流任务花费太多时间,SSI将跳过该任务,ssis,Ssis,我正在创建一个ssis包,用于将数据从一个数据库传输到另一个数据库。但是,如果数据流任务需要花费太多的时间来执行,我希望它停止并继续执行其他任务 我已经尝试将CommandTimeout属性设置为数据流源,但是数据流任务没有停止运行 如果我设置commandtimeout属性,为什么任务不停止 我猜SSIS每次写入源组件的缓冲区时都会调用READ方法。每次调用read方法都会重置commandtimeout。这里有一些信息: 因此,源需要足够慢,以便在commandtimeout期间不返回任何

我正在创建一个ssis包,用于将数据从一个数据库传输到另一个数据库。但是,如果数据流任务需要花费太多的时间来执行,我希望它停止并继续执行其他任务

我已经尝试将
CommandTimeout
属性设置为数据流源,但是数据流任务没有停止运行

如果我设置commandtimeout属性,为什么任务不停止

我猜SSIS每次写入源组件的缓冲区时都会调用READ方法。每次调用read方法都会重置commandtimeout。这里有一些信息:

因此,源需要足够慢,以便在commandtimeout期间不返回任何行。这听起来不适合您的场景

建议的备选方案有:

  • 将数据流放入另一个包中
    • 从脚本任务调用包
    • 使进程在脚本中设置的时间段后超时
  • 或者,将数据流放入另一个包中
    • 从bat文件调用包,让它在自己的进程中运行,直到完成为止

我知道源系统没有适当的索引,这使得读取过程很慢。听起来好像有多个表,你可以考虑单独读取它们,并将它们放在目标服务器上。这可以避免连接可能导致的错误查询计划。此外,请确保要写入的表不是瓶颈-删除索引、约束、添加tablock。

我们可能会想出一个复杂的解决方案-将数据流放入包中,从脚本任务调用包,向脚本任务添加超时条件以终止进程。然而,你对优化加载过程持开放态度吗?好吧,如果没有其他解决方案,我想我将不得不选择你的解决方案。顺便说一句,加载过程已经优化了,设计糟糕的是源数据库:包含数百万条记录的表根本没有索引。。所以,因为它不是重要的数据,所以我决定如果花费太多时间,我会丢弃它并继续移动。你也可以调用一个执行包的bat文件。这可以在它自己的进程中异步运行-所以只需启动它,让它在包的其余部分执行时运行。再次感谢,但真正的问题是:如果我设置commandtimeout属性,为什么任务不停止?在尝试您建议的这些解决方法之前,我想知道我的设置有什么问题..因为commandtimeout只控制包等待源命令返回结果的时间。对于这些结果在其余数据流中处理所需的时间,它没有任何说明。