SSIS错误:无法完成游标操作

时间:2015-03-31 14:55:33

标签: sql-server sql-server-2008 ssis

我每天早上都运行一个SQL Server作业。它存在于我无法访问的环境中。

此作业运行多个SSIS包。它运行的第一个包非常简单。它有5个基本步骤:

  1. 执行SQL。创建一个插入平面文件源的临时表。
  2. 数据流任务。将数据从平面文件源移动到OLEDB目标(临时表)。我有一个数据转换任务,只需将每列设置为nvarchar(255)。这很好。
  3. 序列容器(3内部执行SQL任务)。此容器包含三个执行SQL任务,所有这些任务都对登台表进行数据更新(更新NULLS,无效文本等)。
  4. 我不在SSIS包本身中使用游标。我在下面列出了错误:

      

    OLE DB记录可用。来源:“用于SQL Server的Microsoft OLE DB提供程序”Hresult:0x80004005说明:“无法完成游标操作,因为在声明游标后表格架构已更改。”结束错误

    此错误还引用了两个组件:

      

    OLE DB目标[25]描述:SSIS错误代码DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 “输入”OLE DB目标输入“(38)”失败,因为发生错误代码0xC020907B,并且“输入”OLE DB目标输入“(38)”上的错误行处置指定错误失败。

    我没有在此SSIS包中构建或使用游标。我正在进行的唯一数据库更改是构建临时表。

    我正在使用的联系人对此进行故障排除说它可能是由NULL值引起的,但是,我的所有列都是NULLable。

3 个答案:

答案 0 :(得分:0)

显然,SSIS在内部使用游标来处理你需要的一些任务 - 对于MS开发人员来说,使用游标是很常见的。您可以尝试通过运行项目并禁用任务并运行任务或通过非常仔细地阅读进度选项卡来隔离错误输出的任务。

我会尝试,对于执行SQL任务,将旁路准备转为true并再次尝试任务。

答案 1 :(得分:0)

事实证明,环境是以需要重建数据库索引的方式修补的。因此,架构与执行包时存储的元数据不同。

我确信这个错误有多个原因,但这就是我们发生的事情。

感谢所有评论的人。

答案 2 :(得分:0)

运行使用SCD组件作为维度表的包时,我们遇到了相同的错误消息。根据重建索引的建议为我们工作。但是我们执行了两个动作。确切地说,我们做了以下事情:

  1. 删除并重新创建索引
  2. 重新创建维度包的SCD组件(只需将一个非业务键属性的类型更改为业务键属性,完成向导,反之亦然)。
相关问题