MDS エンティティベースのステージングは、SQL Server 2012 で重複する Batch Tag 値を使用すると失敗する可能性があります

この記事は、マスター データ サービス (MDS) エンティティ ベースのステージングが、SQL Server 2012 で重複する Batch Tag 値を使用すると失敗する可能性がある問題を解決するのに役立ちます。

元の製品バージョン: SQL Server 2012
元の KB 番号: 2712547

現象

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

  • データを MDS にインポートするには、Microsoft SQL Server 2012 MDS エンティティ ベースのステージング プロセスを使用します。

  • 列を使用してバッチを識別することで、さまざまな MDS ステージング テーブル (stg.name) に BatchTag ステージング データを設定します。

  • 同じ BatchTag 値を使用して、異なる MDS モデルの別のエンティティに属する個別のステージング テーブルを設定します。

  • バッチ処理を開始するには、必要なストアド プロシージャを実行します。 または、MDS Web サイトの Integration Management 機能領域からステージング バッチを開始します。

ステージング プロセスを開始するときは、次の 3 つのストアド プロシージャのいずれかを使用します。

  • stg.udp_name_Leaf

  • stg.udp_name_Consolidated

  • stg.udp_name_Relationship

注:

<name> プレースホルダーは、エンティティの作成時に指定されたステージング テーブルの名前です。

次の例は、ステージング ストアド プロシージャを使用してステージング プロセスを開始する方法を示しています。

  • exec mds.stg.udp_entityname1 'versionAdescription',0,'batchtag'

  • exec mds.stg.udp_entityname2 'versionBdescription',0,'batchtag'

このシナリオでは、ステージング プロセスを開始すると、次のエラー メッセージが表示されます。

MDSERR310029
指定されたバッチの状態が無効です。

さらに、バッチの状態をチェックすると、値を持つバッチがBatchTag無期限に状態 [実行中] でスタックしていることがわかります。

注:

MDS Web サイトからバッチ状態をチェックするには、[統合管理] をクリックし、状態を表示するモデルを選択するか、テーブルに[mdm].[tblStgBatch]対してクエリを実行します。

原因

この問題は、MDS エンティティベースのステージング プロセスが MDS モデルに関係なく状態を BatchTag チェックするためです。

解決方法

バッチが [実行中] 状態でスタックしている場合は、バッチ プロセスを停止してから、バッチをもう一度処理します。 バッチ プロセスを停止するには、SQL ステートメントを実行します。 Exec [mdm].[udpStagingBatchQueueActivate] この問題を解決するには、ステージング テーブルのレコードの BatchTag 値を新しい名前に更新します。 さらに、レコードのフィールドが importstatus_ID0 に設定されていることを確認します。

詳細

ステージング プロセスの開始の詳細については、次の Web サイトを参照してください。