Почему предупреждение null aggregate в SQL-запросе приводит к сбою пакета служб SSIS?

сбой пакета служб SSIS с сообщением об ошибке, как показано ниже:

код: 0xC0202009 Источник: DFT заполнить ImageSummary OLE_SRC ProductImage [1] Описание: SSIS код ошибки DTS_E_OLEDBERROR. Произошла ошибка OLE DB. Код ошибки: 0x80004005. Доступна запись OLE DB. Источник: "собственный клиент Microsoft SQL" Hresult: 0x00040EDA описание: "предупреждение: значение Null исключается агрегатом или другим набором операция.".

по расследованию мы обнаружили, что сообщение 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 server, изменив запрос:

С

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

до

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

однако у нас мало вопросы, как ниже, которые мы не смогли найти объяснение и надеемся получить ответ на этом форуме:

  1. Почему предупреждение от SQL пузырится до пакета служб SSIS и вызывает Пакет служб SSIS для сбоя?

  2. если мы запускаем один и тот же пакет во всех других средах dev и UAT с тем же набором данных он работает нормально. Мы видим предупреждение. однако не отображается в среде SQL Server Management Studio причина сбоя служб SSIS. Однако SSIS упаковка в нашем производстве среды не удается. Мы не понимаем логику? Быть там любой порог предупреждений?

2 ответов


сбой пакета служб SSIS из-за следующего предупреждающего сообщения является известной ошибкой, о которой сообщили многие на веб-сайте Microsoft Connect.

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

ссылка на отчет об ошибке на веб-сайте Connect.

последнее обновление команды Microsoft по этой проблеме:

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.

Я не знаю причину проблемы, и команда Microsoft также закрыла эту ошибку как не воспроизводимую. Один из обходных путей, перечисленных на веб-сайте Connect, добавляет следующая Инструкция перед запросом. Пожалуйста, не забудьте включить точку с запятой в конце.

SET ANSI_WARNINGS OFF;

подробнее о параметра на MSDN.


та же проблема здесь, sql 2008r2. Конкретный поток данных, который имел проблему, был твердым в течение нескольких месяцев без проблем. Я также не смог найти нулевые данные.

проверенное свойство базы данных "ANSI Warnings Enabled" имеет значение False. Добавлено SET ANSI_WARNINGS OFF; к началу запроса, и это сработало. Таким образом, похоже, что эта ошибка игнорирует настройку базы данных.