1

当我直接从 Visual Studio 运行包时,它不会引发错误。当我通过 SQL Server 代理作业执行包时,它会引发错误:

来源:Fact_Invoice_Item PWBConsolidation [1] 描述:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。OLE DB 记录可用。来源:“Microsoft 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) 上的 PrimeOutput 方法返回错误代码 0xC0202009。当管道引擎调用 PrimeOutput() 时,组件返回了失败代码。失败代码的含义由组件定义,但错误是致命的并且管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。结束错误 DTExec:包执行返回 DTSER_FAILURE (1)。开始时间:上午 7:14:35 结束时间:上午 7:17:50 经过时间:195.094 秒。包执行失败。注意:该步骤已重试请求的次数 (3),但未成功。步骤失败。

我已经隔离了导致问题的部分。在 Ole Db Source 中,我使用查询来获取数据,当我删除以下行时,包将通过 Sql Server 代理作业成功执行:

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 还是不行

知道为什么会这样吗?

非常感谢,
伊利亚

4

1 回答 1

0

这看起来像您在要插入的表或您正在操作的值上遇到约束问题......比如聚合函数(max,sum,avg..)存在于空值上。

尝试将错误行重定向到一个平面文件或类似的东西,看看你是否仍然得到错误。

也尝试在你的 SQL 语句中设置 ANSI_WARNINGS OFF

享受和好运

于 2012-02-14T22:56:42.630 回答