10

SSIS 包失败并显示如下错误消息:

代码:0xC0202009 来源:DFT 填充 ImageSummary OLE_SRC ProductImage [1] 描述:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。OLE DB 记录可用。来源:“Microsoft SQL Native Client”Hresult:0x00040EDA 描述:“警告:空值被聚合或其他 SET 操作消除。”。

经过调查,我们发现该消息Warning: Null value is eliminated by an aggregate or other SET operation.是由 SQL Server (2005) 查询返回的,SSIS 包作为 DFT 中的源运行,以插入到目标表中。

Select ProductID ,ImageTypeID ,DistinctImageCount ,ImageSize 
from 
    (select a.ProductID ,a.ImageTypeID ,a.DistinctImageCount ,a.ImageSize ,RANK() OVER (PARTITION BY a.ProductID, a.ImageTypeID ORDER BY a.ImageSize) As Ranker 
    from 
        (SELECT TOP 100 Percent spi.ProductID ,sit.ImageTypeID ,CAST(COUNT(DISTINCT spi2.ImageTypeID) as bit) DistinctImageCount ,CAST(spi2.Size as varchar(50)) as ImageSize 
        FROM Stage.ProductImage spi CROSS JOIN Reference.ImageType sit LEFT JOIN Stage.ProductImage spi2 ON spi.ProductID = spi2.ProductID AND sit.ImageTypeID = spi2.ImageTypeID 
        GROUP BY spi.ProductID, sit.ImageTypeID,spi2.Size 
        ORDER BY spi.ProductID, sit.ImageTypeID,spi2.Size
        )a
    )b 
where ranker = 1 
Order by ProductID,ImageTypeID

我们通过修改查询消除了来自 SQL 服务器的警告消息,从而解决了这个问题:

CAST(COUNT(DISTINCT spi2.ImageTypeID)as bit) DistinctImageCount

CAST(SUM(DISTINCT ISNULL(spi2.ImageTypeID,0)) as bit) DistinctImageCount.

但是我们有几个问题如下,我们找不到解释,希望在这个论坛上得到答案:

  1. 为什么来自 SQL 的警告会冒泡到 SSIS 包并导致 SSIS 包失败?

  2. 如果我们在具有相同数据集的所有其他开发和 UAT 环境中运行相同的包,它就可以正常工作。我们可以看到 SQL Server Management Studio 中出现警告,但不会导致 SSIS 失败。但是,我们的生产环境中的 SSIS 包失败。我们没有理解逻辑?是否有任何警告阈值?

4

2 回答 2

10

由于以下警告消息导致的 SSIS 包失败是 Microsoft Connect 网站上许多人报告的已知错误。

Warning: Null value is eliminated by an aggregate or other SET operation

链接到 Connect 网站上的错误报告。

微软团队关于该问题的最新更新:

This problem was resolved in SQL Server 2012 RTM (11.00.2100.60 or later).
There is no hotfix available for SQL Server 2005/2008/2008R2.

我不知道问题的原因,微软团队也关闭了这个错误,因为它不可重现。Connect 网站上列出的解决方法之一是在查询之前添加以下语句。请确保在末尾包含分号。

SET ANSI_WARNINGS OFF;

在 MSDN 上阅读有关ANSI_WARNINGS的更多信息。

于 2012-10-31T12:33:18.657 回答
0

同样的问题,sql 2008r2。存在问题的特定数据流几个月来一直坚如磐石,没有出现任何问题。我也找不到空数据。

已验证的数据库属性“启用 ANSI 警告”设置为 False。添加了 SET ANSI_WARNINGS OFF;到查询的开始,它起作用了。所以看起来这个错误确实忽略了数据库范围的设置。

于 2015-07-09T15:44:08.513 回答