【发布时间】:2012-02-14 16:34:46
【问题描述】:
当我直接从 Visual Studio 运行包时,它不会引发错误。当我通过 SQL Server 代理作业执行包时,它会抛出错误:
来源:Fact_Invoice_Item PWBConsolidation [1] 描述:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误 代码:0x80004005。 OLE DB 记录可用。资料来源:“微软 SQL Server Native Client 10.0" Hresult: 0x00040EDA 描述: "警告:空值被聚合或其他 SET 消除 操作。”。结束错误错误:2012-02-14 07:17:49.01 代码: 0xC0047038 来源:Fact_Invoice_Item SSIS.Pipeline
说明:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。素数输出 组件“PWBConsolidation”(1) 上的方法返回错误代码 0xC0202009。管道时组件返回失败代码 引擎称为 PrimeOutput()。故障码的含义是 由组件定义,但错误是致命的,并且管道 停止执行。在此之前可能会发布错误消息 提供有关失败的更多信息。结束错误 DTExec: 包执行返回 DTSER_FAILURE (1)。开始时间:上午 7 点 14 分 35 秒 完成:上午 7:17:50 经过:195.094 秒。包裹 执行失败。注意:该步骤已重试请求的次数 次 (3) 没有成功。步骤失败。
我已经隔离了导致问题的部分。在 Ole Db Source 中,我使用查询来获取数据,当我删除以下行时,包会通过 Sql Server Agent Job 成功执行:
Checksum = Checksum(S.BrokerID, S.TeamID, II.DatabaseName, II.INVOICE, I.Invoice_Date, P.Expiration_Date, P.Effective_Date,
P.Binder_Effective, I.AGENCY, II.MARKET, P.POLICY, CT.LINE_OF_BUSINESS, II.Coverage_Type, SUB.INSURED,
LOB.Description, CT.Description, I.Date_Due, I.Installment, P.Installments, P.ENDORSES, I.Inv_Tdate, Inv_Acctcur,
INS.INDUSTRY, SUB.SUBMISSION
)
编辑:
我刚刚检查过,看起来部分数据通过了数据流,在某些时候它只是抛出了错误。我手动设置了 Checksum=2 还是不行
知道为什么会这样吗?
非常感谢,
伊利亚
【问题讨论】:
-
我会查看 SQL 代理帐户相对于引用的表和列的权限。看起来它对这八个左右的表之一没有选择权限。所有这些列都包含在数据流中吗?如果缺少一个,那将是权限不足的最有可能的候选人。
-
它们出现在数据流中。更糟糕的是,这已经持续了几个星期,直到今天
-
包保护级别是否有可能是 EncryptSensitiveWithUserCredentials 并且 PackageCreator 的 Active Directory 帐户最近已被删除?
-
校验和字段的数据类型是什么?如果是二进制/LOB 类型,您可能会遇到文件系统权限问题。
-
我如何知道数据类型是什么?我想这是默认的,对吧?可以改吗?
标签: sql-server visual-studio ssis sql-agent-job