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
。
ただし、以下のようないくつかの質問があり、説明を見つけることができず、このフォーラムで回答を得ることを望んでいます。
SQLからの警告がSSISパッケージに到達し、SSISパッケージが失敗するのはなぜですか?
同じデータセットを持つ他のすべての開発環境とUAT環境で同じパッケージを実行すると、正常に機能します。SQL Server Management Studioに警告が表示されますが、SSISが失敗することはありません。ただし、本番環境のSSISパッケージは失敗します。私たちは論理を理解できていませんか?警告のしきい値はありますか?