【发布时间】:2015-03-31 14:55:32
【问题描述】:
我有一个每天早上运行的 SQL Server 作业。它存在于我无法访问的环境中。
此作业运行多个 SSIS 包。它运行的第一个包相当简单。它有 5 个基本步骤:
- 执行 SQL。创建将平面文件源插入其中的临时表。
- 数据流任务。将数据从平面文件源移动到 OLEDB 目标(临时表)。我有一个数据转换任务,它只是将每一列设置为
nvarchar(255)。这很好用。 - 序列容器(内部有 3 个执行 SQL 任务)。此容器包含三个执行 SQL 任务,所有这些任务都对暂存表进行数据更新(更新 NULLS、无效文本等)。
我不在 SSIS 包本身中使用游标。我在下面列出了错误:
一个 OLE DB 记录可用。来源:“Microsoft OLE DB Provider for SQL Server”Hresult:0x80004005 描述:“无法完成游标操作,因为声明游标后表架构发生了变化。”。结束错误
此错误还涉及两个组件:
OLE DB 目标 [25] 描述:SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 “输入“OLE DB 目标输入”(38)”失败,因为发生错误代码 0xC020907B,并且“输入“OLE DB 目标输入”(38)”上的错误行处理指定错误失败。
我没有在这个 SSIS 包中构建或使用游标。我所做的唯一数据库更改是构建临时表。
与我一起解决此问题的联系人说这可能是由 NULL 值引起的,但是,我的所有列都是 NULLable。
【问题讨论】:
-
游标必须包含在包执行期间直接或间接调用的代码中。在没有看到该代码的情况下,SO 上的任何人都无法帮助调试它。
-
我害怕那个。但是,我认为此时排除包装本身就足够了。我目前是这个项目的唯一成员,所以我很高兴能够至少从 SO 中反弹一些东西。如果我们需要关闭它,我们可以。
标签: sql-server sql-server-2008 ssis