SQL Server 2012 で DQS クレンジング変換を実行するとエラー (DQS クレンジングが実行前フェーズで失敗しました)

この記事は、SQL Server 2012 の SSIS ログにエラーが記録される問題を回避するのに役立ちます。

適用対象: SQL Server 2012 Developer、SQL Server 2012 Enterprise、SQL Server 2012 Standard
元の KB 番号: 2715968

現象

次のような状況で問題が発生します。

  • SQL Server-Integrated Service (SSIS) Data Flowの Data Quality Services (DQS) クレンジング変換を使用して、Microsoft SQL Server 2012 のデータをクレンジングします。
  • DQS クレンジング変換の [エラー出力の構成] 設定を "リダイレクト行" に設定します。ただし、エラー出力を保存する場所は指定しません。
  • SSIS パッケージを実行します。

このシナリオでは、次のエラー メッセージが SSIS ログに記録されます。

DQS クレンジングが実行前フェーズに失敗し、エラー コード 0x80070057が返されました。
System.ArgumentException: 値が想定される範囲内に収まらない。
at Microsoft.SqlServer.Dts.pipeline.Wrapper.IDTSBufferManager100.FindColumnByLineageID(Int32 hBufferType, Int32 nLineageID)
at Microsoft.Ssdqs.Component.DataCorrection.Logic.DataCorrectionComponent.PreExecute() at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostPreExecute(IDTSManagedComponentWrapper100 ラッパー)

原因

この問題は、DQS ドメインの条件とルールを満たしていない行に対して生成されるエラー出力に宛先が設定されていないために発生します。

回避策

この問題を解決するには、以下のいずれかの手順を実行します。

  • 方法 1

    エラー行をリダイレクトしない場合は、次の手順に従って問題を解決します。

    1. DQS クレンジング変換エディターで DQS コンポーネントを開きます。
    2. [DQS クレンジング変換] エディターの下部にある [エラー出力の構成] ドロップダウン リストで [失敗コンポーネント] を選択します。
  • 方法 2

    エラー行をリダイレクトする必要がある場合は、エラーのリダイレクト先の場所があることを確認する必要があります。