我有一个正在执行的数据流任务。
流程很简单,对不同的表进行两次查询(都带有几个连接),然后通过公共(public) id 对输出进行排序和合并,向所有记录添加静态列,将行计数保存在用户变量中以供以后使用使用并最终插入到另一个数据库上的表中。
我们正在使用 OLE DB 源和目标。源是 MSSQL 2000,目标是 MSSQL 2012
症状:
信息:加载沙箱表处的 0x40043006,SSIS.Pipeline:准备执行阶段正在开始。
信息:加载沙箱表中的 0x40043007,SSIS.Pipeline:预执行阶段正在开始。
在执行停止之前什么也没有。
失败的解决方案:
SET FMTONLY OFF;
SET NOCOUNT ON;
在开头添加。
额外位:
我真的希望有人能帮助我。我对 SSIS 相当陌生,这是我第一次使用它。我通常使用 Pentaho 进行 ETL,但客户需要在 SSIS 上实现该解决方案。我已经和这个问题斗争了几天了,我开始没有解决它的想法了。
当通过命令行运行时,它也被卡住,我得到以下输出:
Progress: 2013-03-19 14:36:26.21
Source: Load Sandbox Table
Validating: 0% complete
End Progress
Progress: 2013-03-19 14:36:26.21
Source: Load Sandbox Table
Validating: 12% complete
End Progress
Progress: 2013-03-19 14:36:26.22
Source: Load Sandbox Table
Validating: 25% complete
End Progress
Progress: 2013-03-19 14:36:26.22
Source: Load Sandbox Table
Validating: 37% complete
End Progress
Progress: 2013-03-19 14:36:26.23
Source: Load Sandbox Table
Validating: 50% complete
End Progress
Progress: 2013-03-19 14:36:26.25
Source: Load Sandbox Table
Validating: 62% complete
End Progress
Progress: 2013-03-19 14:36:26.25
Source: Load Sandbox Table
Validating: 75% complete
End Progress
Progress: 2013-03-19 14:36:26.25
Source: Load Sandbox Table
Validating: 87% complete
End Progress
Progress: 2013-03-19 14:36:26.25
Source: Load Sandbox Table
Validating: 100% complete
End Progress
Warning: 2013-03-19 14:36:26.26
Code: 0x80047076
Source: Load Sandbox Table SSIS.Pipeline
Description: The output column "ITEM_OID (1)" (47) on output "Merge Join Outp
ut" (28) and component "Merge Join" (11) is not subsequently used in the Data Fl
ow task. Removing this unused output column can increase Data Flow task performa
nce.
End Warning
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 0% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 12% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 25% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 37% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 50% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 62% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 75% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 87% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 100% complete
End Progress
Progress: 2013-03-19 14:36:26.31
Source: Load Sandbox Table
Pre-Execute: 0% complete
End Progress
Progress: 2013-03-19 14:36:26.31
Source: Load Sandbox Table
Pre-Execute: 12% complete
End Progress
Progress: 2013-03-19 14:36:26.31
Source: Load Sandbox Table
Pre-Execute: 25% complete
End Progress
Progress: 2013-03-19 14:36:26.34
Source: Load Sandbox Table
Pre-Execute: 37% complete
End Progress
Progress: 2013-03-19 14:36:45.69
Source: Load Sandbox Table
Pre-Execute: 50% complete
End Progress
之后它再次卡住。
解决方案 (在此发布此内容是因为我在另外 5 小时内无法回答自己的问题,当允许时我会这样做。)< br/>
我终于明白了。
事实证明验证存在问题,但不仅仅是 SSIS 元素经过该验证,如问题的第四个失败解决方案中所述。
CONNECTIONS 也经过验证并具有自己的延迟验证属性,需要将其设置为 true。
之后,整个过程的执行时间从 40 多分钟或没有运行减少到不到一分钟(这只是更大过程的一个步骤)
我希望遇到同样问题的人能够轻松找到这个解决方案,因为有很多人遇到这个问题,而且网上几乎没有发布解决方案。
简而言之:检查任务中涉及的所有元素(包括数据库连接)是否已将延迟验证属性设置为 True。
最佳答案
我终于明白了。 事实证明验证存在问题,但不仅仅是 SSIS 元素经过验证,如问题的第四个失败解决方案中所述。 CONNECTIONS 也经过验证并具有自己的延迟验证属性,需要将其设置为 true。 之后,整个过程的执行时间从 40 多分钟或没有运行减少到不到一分钟(这只是更大过程的一个步骤) 我希望遇到同样问题的人能够轻松找到这个解决方案,因为有很多人遇到这个问题,而且网上几乎没有发布解决方案。
简而言之:检查任务中涉及的所有元素(包括数据库连接)是否已将延迟验证属性设置为 True。
关于sql-server - SSIS 数据流任务在执行预执行阶段时挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15508594/