10

SSISパッケージが失敗し、次のようなエラーメッセージが表示されました。

コード:0xC0202009ソース:DFT Populate ImageSummary OLE_SRC ProductImage [1]説明:SSISエラーコードDTS_E_OLEDBERROR。OLEDBエラーが発生しました。エラーコード:0x80004005。OLEDBレコードが利用可能です。ソース: "Microsoft SQL Native Client" Hresult:0x00040EDA説明: "警告:null値は集計またはその他のSET操作によって削除されます。"

調査の結果、メッセージWarning: Null value is eliminated by an aggregate or other SET operation.はSQLサーバー(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パッケージの障害は、MicrosoftConnectWebサイトで多くの人から報告されている既知のバグです。

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

ConnectWebサイトのバグレポートへのリンク。

この問題に関する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 Webサイトにリストされている回避策の1つは、クエリの前に次のステートメントを追加することです。最後にセミコロンを必ず含めてください。

SET ANSI_WARNINGS OFF;

MSDNでANSI_WARNINGSの詳細を読んでください。

于 2012-10-31T12:33:18.657 に答える
0

ここで同じ問題、sql2008r2。問題が発生した特定のデータフローは、何ヶ月も問題なく堅実でした。nullデータも見つかりませんでした。

検証済みのデータベースプロパティ「ANSI警告が有効」がFalseに設定されていました。SETANSI_WARNINGSOFFを追加しました。クエリの開始まで、そしてそれは機能しました。したがって、このバグはデータベース全体の設定を無視しているようです。

于 2015-07-09T15:44:08.513 に答える