我有一个正在执行的数据流任务。
流程很简单,对不同的表进行两次查询(都带有几个连接),然后通过一个公共 id 对输出进行排序和合并,为所有记录添加一个静态列,将行数保存在用户变量中以备后用使用并最终插入到另一个数据库上的表中。我们正在使用 OLE DB 源和目标。源是 MSSQL 2000,目标是 MSSQL 2012
症状:
信息:SSIS 加载沙箱表中的 0x40043006。管道:准备执行阶段开始。
信息:加载沙箱表中的 0x40043007,SSIS.Pipeline:预执行阶段开始。
在停止执行之前仅此而已。
失败的解决方案:
SET FMTONLY OFF;
设置无计数;
在开始时添加。
额外的位:
我真的希望有人能帮助我。我对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 个小时内无法回答我自己的问题,我会在允许时这样做。)
我终于明白了。
事实证明,验证存在问题,但不仅 SSIS 元素通过了验证,如问题的第四个失败解决方案中所述。
CONNECTIONS 也得到验证并具有自己的延迟验证属性,需要将其设置为 true。
之后,整个过程的执行时间从 40 多分钟或不运行到不到一分钟(这只是更大过程的一个步骤)
我希望有同样问题的人可以轻松找到这个解决方案,因为有很多遇到这个问题的人几乎没有在线发布解决方案。
简而言之: 检查任务中涉及的所有元素,包括数据库连接,是否将延迟验证属性设置为 True。