次の方法で共有


Data Export Service を使用してデータをAzure SQL Databaseにレプリケートする

注意

2021 年 11 月より、データ エクスポート サービスは廃止されました。 データ エクスポート サービスは引き続き機能し、2022 年 11 月にサポート終了と販売終了となるまで完全にサポートされます。 詳細情報: https://aka.ms/DESDeprecationBlog

Data Export Service は、顧客所有のAzure サブスクリプションのAzure SQL Database ストアに、Microsoft Dataverse データベースからデータをレプリケートする機能を追加する、Microsoft Marketplace で利用できるアドオン サービスです。 サポートされているターゲットは、Azure SQL DatabaseとAzure仮想マシン上のSQL Serverです。 データ エクスポート サービスはデータ全体を最初に同期して、その後はシステムで変更 (差分変更) が発生すると継続的に同期します。 これにより、Azureデータおよび分析サービスを使用してデータの上に複数の分析とレポートのシナリオを有効にし、顧客とパートナーがカスタム ソリューションを構築するための新しい可能性を開きます。

注意

Azure Synapse Link for Dataverse を使用して、Dataverse データを Azure Synapse Analytics または Azure Data Lake Gen2 にエクスポートすることを強くお勧めします。 詳細情報: Dataverse の Azure Synapse Linkを使用した分析に時間を短縮する

Data Export Service を使用して、顧客エンゲージメント アプリ (Dynamics 365 Sales、Dynamics 365 Customer Service、Dynamics 365 Field Service、Dynamics 365 Marketing、および Dynamics 365 Project Service Automation) を利用できます。

データ エクスポート サービスの構成と管理を行うプログラム インターフェイスについては、開発者ガイドの データ エクスポート サービス を参照してください。

データ エクスポート サービスを使用するための前提条件

データ エクスポート サービスの使用を開始する際は、次の前提条件が必要です。

Azure SQL Database サービス

  • 顧客所有のAzure SQL Databaseサブスクリプション。 このサブスクリプションでは、同期されるデータ量を許可する必要があります。

  • ファイアウォール設定。 Azure サービスへのアクセス権をオフにして、このトピックに記載されている適切なクライアント IP アドレスを指定することをお勧めします。 詳細: データ エクスポート サービスで使用される Azure SQL データベースの静的 IP アドレス

    または、Azure サービスへのアクセスを有効にしてAzureサービスのすべてのアクセスを許可することもできます。

    Azure VM でSQL Serverする場合は、[インターネット経由でSQL Serverに接続する] オプションを有効にする必要があります。 詳細情報: Azure: Azure 上の SQL Server 仮想マシンに接続する

    さらに、データ エクスポート サービスとSQL Server間の通信を許可するようにファイアウォール規則を構成します。

  • データベース ユーザーは、次のテーブルに従って、データベースとスキーマ レベルのアクセス許可を持っている必要があります。 データベースユーザーは、データエクスポートの接続文字列に使用されます。

    必要なデータベース アクセス許可

    許可の種類コード アクセス許可の名前
    CRTB CREATE TABLE
    CRTY 型の作成
    CRVW ビューの作成
    CRPR 手順の作成
    ALUS 任意のユーザーを変更
    VWDS データベース状態の表示

    スキーマアクセス許可が必要です。

    許可の種類コード アクセス許可の名前
    AL 変更
    IN 挿入
    DL 削除
    SL SELECT
    アップ 更新
    EX 実行
    RF 参照

Azure Key Vault サービス

  • 顧客が所有する Key Vault サブスクリプションは、データベース接続文字列を安全に維持するために使用されます。

  • Id "b861dbcc-a7ef-4219-a005-0e4de4ea7dcf" を持つアプリケーションに PermissionsToSecrets アクセス許可を付与します。これは、以下の AzurePowerShell コマンドを実行して完了でき、connection string シークレットを含むKey Vaultにアクセスするために使用されます。 詳細: Azure Key Vault

  • Key Vault内のシークレットには、組織 (OrgId) とテナント ID (TenantId) でタグ付けする必要があります。 これを完了する際は以下の AzurePowerShell コマンドを実行します。 詳細: Azure Key Vault

  • Data Export Service と Azure Key Vaultの間の通信を許可するようにファイアウォール規則を構成します。

顧客エンゲージメント アプリ

  • バージョン 9.0 以降の環境です。

  • データ エクスポート サービス ソリューションのインストールが必要です。

    • Settings>Microsoft Marketplace> 検索に移動するか、Microsoft Dynamics 365 - Data Export Service に移動します。 を選択し、Get now を選択します。
    • または、 Microsoft Marketplace で見つけます。
  • エクスポート プロファイルに追加されるエンティティが変更追跡と共に有効にされている必要があります。 カスタマイズ>システムのカスタマイズ に移動してエンティティを選択することにより、標準またはカスタムのエンティティを同期できることを確認します。 全般タブが、データ サービスセクションの変更履歴オプションで有効になっていることを確認します。

  • 環境では、システム管理者セキュリティ ロールを所有している必要があります。

Web ブラウザ

Web ブラウザーで、ドメイン https://discovery.crmreplication.azure.net/ のポップアップを有効にします。 これは、[設定] > [データ エクスポート] の順に移動するときの自動サインインに必要です。

サービス、資格情報、および権限が必要

データ エクスポート サービスの機能を使用する際は、次のサービス、資格情報、特権が必要です。

  • サブスクリプション。 システム管理者セキュリティ ロールが割り当てられたユーザーだけが、エクスポート プロファイルを設定または変更することができます。

  • 次のサービスを含むAzureサブスクリプション。

    • Azure仮想マシン上のAzure SQL Databaseまたは AzureSQL Server。

    • Azure Key Vault。

重要

Data Export Service を使用するには、顧客エンゲージメント アプリとAzure Key Vault サービスが同じテナントと同じMicrosoft Entra ID内で動作する必要があります。 詳細については、Azure Microsoft 365

Azure SQL Database サービスは、サービスと同じテナントまたは別のテナントに存在できます。

データ エクスポート サービスを使用する前に知っておくべきこと

  • 環境上の次の任意のアクション実行するときは、エクスポートのプロファイルを削除してから再び作成することが必要です。

    • 環境を復元します。
    • 環境をコピーします (完全または最小のいずれか)。
    • 環境をリセットします。
    • 環境を別の国または地域に移動します。

    そのためには、エクスポート プロファイル ビュー内のエクスポート プロファイルを削除し、次にテーブルおよび保存された手順を削除し、次に新しいプロファイルを作成します。 詳細情報: データ エクスポート プロファイル テーブルとストアド プロシージャをすべて削除する方法

  • 管理者モードを有効化する オプションが有効化されているサンドボックス環境や運用環境では、データ エクスポート サービスを使用できません。 詳細については次を参照してください: 管理モード

  • Data Export Service は、次のアクションが発生しても、関連付けられているテーブル、列、またはストアド プロシージャ オブジェクトAzure SQLデータベースにドロップ (削除) しません。

エクスポート プロファイル

顧客エンゲージメント アプリからデータをエクスポートするには、 管理者がエクスポート プロファイルを作成します。 複数のプロファイルを作成してアクティブ化することで、異なる転送先データベースへ同時にデータを同期させることができます。

エクスポート プロファイルはデータ エクスポート サービスのコアの概念です。 エクスポート プロファイルでは、転送先データベースとデータを同期する設定と構成情報を収集します。 エクスポート プロファイルの一部として、管理者は転送先データベースへエクスポートするエンティティの一覧を提供します。 アクティブ化されると、エクスポート プロファイルはデータの自動同期を開始します。 最初は、指定のエンティティに対応するすべてのデータがエクスポートされます。 その後、エンティティ レコードに発生するデータの変更のみ、または顧客エンゲージメント アプリ内のメタデータが、実際の時間と近いプッシュ メカニズムを使用して継続的に同期されます。 したがって、顧客エンゲージメント アプリからデータを取得するようにスケジュールを設定する必要はありません。

変更追跡が有効になっているエンティティのみ、エクスポート プロファイルに追加できます。 データをキャプチャする標準のエンティティのほとんどは、変更の追跡が有効になっていることに注意してください。 ユーザー定義エンティティは、エクスポート プロファイルに追加する前に変更の追跡を明示的に有効にする必要があります。 詳細については、変更の追跡を有効化してデータの同期をコントロールするを参照してください。

データ エクスポート サービスはメタデータとデータの同期を行います。 各エンティティは 1 つのテーブルを変換し、各フィールドは目的のデータベース テーブルの列を変換します。 テーブルおよび列名は、メタデータのスキーマ名を使用します。

アクティブ化されると、エクスポート プロファイルは、エクスポートされたデータの操作上の可視性および診断に役立つデータ同期のための統計を収集します。

エクスポート プロファイルで利用可能なデータ同期機能

カテゴリ 機能 サポートされているデータの種類
初期同期 メタデータ - 基本的なデータの種類 整数、浮動小数点数、10 進数、1 行テキスト、複数行テキスト、日時のデータ型。
初期同期 メタデータ - 高度なデータの種類 通貨、PartyList(パーティリスト)、オプション セット、ステータス、理由、ルックアップ(顧客および関連タイプのルックアップ)。 PartyList は、バージョン 8.1 以降のみエクスポートの利用ができます。
初期同期 データ - 基本的な種類 すべての基本データの種類。
初期同期 データ - 高度なデータの種類 すべての高度なデータの種類。
差分同期 スキーマの変更 - 基本的な種類 基本データ型のすべてでフィールドを追加または変更します。
差分同期 スキーマの変更 - 高度な種類 フィールドの変更を追加または修正し、すべての高度なデータタイプに対応します。
差分同期 データを修正 - 基本的な種類 すべての基本データの種類。
差分同期 データの変更 - 高度な種類 高度なデータタイプすべて、例えば PartyList。

エクスポート プロファイルの作成

エクスポート プロファイルを作成する前に、次の要件が満たされていることを確認します。

  • データ エクスポート サービス ソリューションを環境にインストールします。

  • Key Vaultで SQL Database connection stringを維持し、エクスポート プロファイルに指定するKey Vault URL をコピーします。 詳細情報: Azure: Azure Key Vault を使い始める

  • エクスポート プロファイルに追加されるエンティティは、変更の追跡が有効になります。 詳細については、変更の追跡を有効化してデータの同期をコントロールするを参照してください。

  • SQL Database サービスにはデータの保存に十分な記憶域があります。

  • あなたは、環境のシステム管理者です。

  1. 設定>データ エキスポートの順に移動します。

  2. データをエクスポートしたくない場合、通知をレビューし、続行 または キャンセル を選択します。

  3. 新しいエクスポート プロファイルを作成するには、新規 を選択します。

  4. Properties ステップで、次の情報を入力し、Next を選択して、Key Vaultに接続せずに続行します。 Validate を選択すると、Key Vaultに接続するために指定したKey Vault URL が使用されます。

    • 名前。 プロファイルの一意の名前です。 このフィールドは必須です。

    • Key Vault 接続 URL。 Key Vault URL は、宛先データベースに接続するために使用される資格情報と共に格納されている connection string を指しています。 このフィールドは必須です。 詳細: Azure Key Vault

      重要

      Key Vault接続 URLでは大文字小文字の区別が必要です。 Key Vault接続 URL は、このトピックの Windows PowerShell コマンドを実行した後に表示されるとおりに入力します。

    • スキーマ。 代替データベース スキーマの名前です。 英数字のみ有効です。 このフィールドは任意です。 既定では、dbo が転送先 SQL Database データベースで使用されるスキーマです。

    • 接頭辞: 転送先データベースで作成されたテーブル名に使用する接頭辞です。 これにより、転送先データベースのエクスポート プロファイルで作成されたテーブルを簡単に見分けることができるようになります。 指定された場合、接頭辞は 15 文字未満である必要があります。 このフィールドは任意であり、英数字のみ使用できます。

    • 再試行回数。 転送先テーブルで挿入または更新に失敗した場合に再試行されるレコードの回数。 このフィールドは必須です。 既定値は 12 で、利用可能な値は 0-20 です。

    • 再試行間隔。 失敗した場合の再試行までの待機秒数。 このフィールドは必須です。 既定値は 5 で、利用可能な値は 0-3600 です。

    • 削除ログの書き込み。 削除されたレコードを記録するためのオプション設定。

    [エクスポート プロファイルの作成] ダイアログ ボックスの [プロパティ] タブ。

  5. エンティティの選択 ステップで、転送先 SQL Database データベースにエクスポートするべきエンティティを選択し、次へ を選択します。

    [エクスポート プロファイルの作成] ダイアログ ボックスの [エンティティ] タブ。

  6. 関連付けの選択 ステップで、前のステップで選択したエンティティと一緒に存在する M:N (多対多) の関連付け を同期できます。 次へを選択します。

    エクスポート プロファイルの作成 - Manage Relationships - リレーションシップの選択.

  7. Summary ステップで、Create and Activate を選択してプロファイル レコードを作成し、同期プロセスを開始するKey Vaultに接続します。 それ以外の場合は、作成 を選択してエクスポート プロファイルを保存し、後でアクティブ化します。

    [エクスポート プロファイルの作成] ダイアログ ボックスの [概要] タブ。

既存のエクスポート プロファイルの変更

既存のエクスポートプロファイルで、複製したいエンティティおよび関連を追加または削除できます。

  1. 設定>データ エキスポートの順に移動します。

  2. [すべてのエクスポート プロファイル] ビューで、変更するエクスポート プロファイルを選択します。

    エクスポート プロファイルの選択。

  3. [操作] ツール バーで、エンティティの管理 を選択し、データ エクスポート用のエンティティを追加、または削除します。 エンティティの関連付けを追加または削除するには、関連付けの管理 を選択します。

    エンティティまたはエンティティの関連付けの管理。

  4. 追加または削除するエンティティまたはエンティティの関連付けを選択します

    追加または削除するエンティティまたはエンティティの関連付けを選択する。

  5. 更新 を選択し、変更をエクスポート プロファイルに送信します。

重要

エクスポート プロファイルからエンティティまたはエンティティのリレーションシップを削除した場合、目的とするデータベース内に対応するテーブルをドロップしません。 削除したエンティティを再度追加する前に、目的とするデータベース内に対応するテーブルをドロップする必要があります。 エンティティ テーブルをドロップするには、特定のエンティティに対するデータ エクスポート プロファイルのテーブルおよびストアド プロシージャの削除方法 を参照してください。

変換先のAzure SQL Databaseのテーブルの詳細

データ エクスポート サービスはデータとメタデータのテーブルを両方作成します。 各エンティティと同期される M:N リレーションシップごとにテーブルが作成されます。

エクスポート プロファイルがアクティブ化されると、これらのテーブルが目的とするデータベース内に作成されます。 これらはシステム テーブルで、SinkCreatedTime と SinkModifiedTime のフィールドは追加されません。

テーブル名 作成済み
<接頭辞>_GlobalOptionsetMetadata エクスポートプロフィールのアクティブ化の時に。
<接頭辞>_OptionsetMetadata エクスポートプロフィールのアクティブ化の時に。
<接頭辞>_StateMetadata エクスポートプロフィールのアクティブ化の時に。
<接頭辞>_StatusMetadata エクスポートプロフィールのアクティブ化の時に。
<接頭辞>_TargetMetadata エクスポートプロフィールのアクティブ化の時に。
<接頭辞>_AttributeMetadata エクスポートプロフィールのアクティブ化の時に。
<接頭辞>_DeleteLog ログの削除オプションが有効化された場合に、エクスポート プロファイルをアクティブ化します。

同期の問題の解決

複数回再試行した後でも、データベースの記憶域の制約または長時間にわたるクエリの実行によるテーブルのロックにより、レコードの同期エラーが引き起こされる場合があります。 これらのエラーを解決するために、失敗したレコードのみの再同期、またはすべてのレコードの再同期を強制できます。

  1. エクスポートプロファイルを表示して、レコード同期における失敗を確認します。 同期エリアのデータ プロファイルの表示、またはコンタクト エンティティ レコード同期エラーがあるこのプロファイルなどのエクスポート プロファイルを開くことによりこれを行います。

    データエクスポートの失敗したレコードが存在します。

  2. 同期エラーの原因を調査し、解決します。 詳細情報: エラーの処理と監視

  3. 問題を解決した後、失敗したレコードを再同期します。

    注意

    失敗したレコードの再同期は、パブリック プレビューの機能です。

    • プレビュー機能は運用環境での使用を想定しておらず、機能が制限されている可能性があります。 これらの機能を公式リリースの前に使用できるようにすることで、顧客が一足先にアクセスし、そこからフィードバックを得ることができます。
      • この機能は変更される予定であるため、運用環境では使用しないでください。 開発環境およびテスト環境に限ってご使用ください。
      • マイクロソフトはこのプレビュー機能のサポートを提供しません。 Microsoft Dynamics 365 テクニカル サポートでは、問題や質問に関するサポートを受けることができません。 プレビュー機能は運用環境での使用を想定しておらず、別個の追加使用条件が適用されます。
    1. 環境にサイン インして、設定>データ エキスポートの順に移動します。

    2. レコード同期エラーが含まれるエクスポート プロファイルを開きます。

    3. [エクスポート プロファイル] ツールバーの 失敗したレコードの再同期 を選択します。

    4. 確認ダイアログで失敗したレコードの再同期の成功を確認し、Ok を選択します。

    再同期成功の通知。

    1. エクスポート プロファイルに失敗したレコードの通知が含まれていないことを確認します。これは、データ エクスポート プロファイルを開き、プロパティと概要 タブの 失敗した通知 カウンターが 0 になっているこで確認できます。 [エクスポート プロファイル] ツールバーの 更新 を選択して、失敗した通知 の値が現在の値であることを確認します。

    失敗インジケーションの記録がゼロです。

  4. 前の手順の後に同期を試みた後、レコードの同期機能が失敗し続ける場合、Microsoft カスタマ サポート サービスにご連絡ください。

エラー処理と監視

エクスポート プロファイルの同期状態を表示するには、設定>データ エクスポートに移動し、エクスポート プロファイルを開きます。 エンティティタブでは、同期できなかった失敗したレコード列のレコードを含む同期ステータスが表示されます。 失敗したレコードの場合、ステータス理由を含むレコードの一覧は、コマンド バーの 失敗したレコード を選択してダウンロードすることができます。

エクスポート プロファイルのコマンド バー - [失敗したレコード] ボタン。

[エクスポート プロファイル] で、プロパティと概要 を選択するとプロファイルのプロパティが表示されます。 関連付けの同期ステータスを表示するには、関連付け を選択します。

同期に失敗したレコードに関する詳細情報を表示する方法

失敗したレコード ログの表示は同期エラーの原因を特定する助けになります。 Azure の変換先データベースで失敗したレコードを表示するには、Azure Storage データを簡単に操作できる無料のスタンドアロンアプリである Azure Storage Explorer を使用します。 詳細情報: Azure Storage Explorer

  1. 設定>データ エキスポートの順に移動します。

  2. すべてのデータ エクスポート プロファイル ビューで、失敗通知があるエクスポート プロファイルを選択します。

    失敗した通知。

  3. [アクション] ツールバーで、失敗したレコード を選択します。

    エラーレコードのツールバーボタン。

  4. 失敗したレコードのダイアログ ボックスのダウンロードでは、BLOB URL のコピー を選択した後に、Ok を選択します。

    失敗したレコードのダウンロード ダイアログ ボックス。

    注意

    blob URL は最大 24 時間有効です。 URL が 24 時間 を超える場合は、新規 BLOB URL を生成するには、先ほど説明された手順を繰り返します。

  5. Azure Storage Explorerを開始します。

  6. Azure Storage Explorerで、Azure ストレージに接続を選択します。

  7. クリップボードの URL を Connect to Azure Storage ボックスに貼り付け、Next を選択します。

  8. [接続概要] ページで、接続 を選択します。

  9. Azure Storage Explorerは、移行先データベースに接続します。 エクスポート プロファイルに失敗したレコードが存在する場合は、失敗したレコード同期フォルダーが Azure Storage Explorer に表示されます。

同期に失敗したレコードに関する詳細情報を表示する方法 (プレビュー)

データ エクスポート サービス ユーザー インターフェイス内から、失敗したレコードを直接ダウンロードできます。 この機能は、現在プレビュー段階で、テストしてフィードバックを提供するのに最適です。

失敗したレコード ダウンロードのステップ

  1. 失敗したレコードを含むプロファイルを識別します。

    データ エクスポート プロファイル。

  2. プロファイルを選択し、上部にあるメニュー バーで 失敗したレコードのダウンロード (プレビュー) を選択します。

    失敗したレコードのダウンロード (プレビュー)。

  3. 失敗したレコードのダウンロード ダイアログ ボックスで、最後の 20 個 (最大) の Bolb ファイルの並び替えられたリストが表示されます。 ダウンロードするレコードを選択し、Ok を選択します。

    失敗したレコードのダウンロード。

  4. ダウンロードした場合は、任意のテキスト エディターのファイル (たとえば、メモ帳など) を開き、エラーの詳細を参照してください。

    エラー ログのサンプル。

失敗したレコードの再同期フォルダー構造およびログ ファイル

失敗したレコード Azure BLOB ストレージの URL は、次のフォルダー構造を持つ場所を指します。

  • data。 このフォルダーには失敗したデータの通知と関連するレコード データに対する JSON が含まれます。

  • metadata。 このフォルダーには失敗したメタデータの通知と関連するメタデータに対する JSON が含まれます。

  • failurelog。 このフォルダーには同期のエラーおよびエラーが発生した理由に関する情報を提供するログが含まれます。

  • forcerefreshfailurelog。 このフォルダーには、失敗したレコードの再同期に使用された、データ エクスポート サービスの失敗したレコード コマンドの最後の実行によるエラーが含まれます。

  • 処理不能メッセージ。 このフォルダーには、データまたはメタデータおよび関連する JSON の削除のいずれかによって処理されなかったデータ通知が含まれます。

    failurelog および forcerefreshfailurelog フォルダーは \\\時間 という形式で構築されるので、最新のエラーを素早く見つけられます。 30 日経過したすべての失敗レコードは削除されます。

    取引先担当者エンティティ レコードの同期エラーを示す例のログ ファイルを以下に示します。

Entity: contact, RecordId: 459d1d3e-7cc8-e611-80f7-5065f38bf1c1, NotificationTime: 12/28/2016 12:32:39 AM, ChangeType: Update, FailureReason: The database 'tempdb' has reached its size quota. Partition or delete data, drop indexes, or consult the documentation for possible resolutions.  
The statement has been terminated.  

レコード同期エラーの一般的な理由

レコード同期エラーが発生するいくつかの理由を説明します。

  • 目的のデータベースに対する不十分なストレージ 失敗したレコードを再同期する前に、必要に応じてAzure SQL Databaseストレージを増やすか解放します。 この問題が発生すると、これと似たメッセージがエラー ログに記録されます。

    'databasename' データベースの最大サイズに達しました。 データを分割または削除、インデックスをドロップ、または解決方法のドキュメントを参照します。

  • Azure SQL Databaseでの同期タイムアウト。 これは 1 度に大きな容量のデータが処理された場合に、データ エクスポート プロファイルの最初の同期中に発生する場合があります。 この問題が発生した場合、失敗したレコードを再同期します。 同期の問題の解決

データ エクスポートでAzure SQL Databaseを使用する場合のベスト プラクティス

  • リソースの調整による同期エラーを回避するために、データ エクスポート サービスを使用する場合は、Azure SQL Database Premium P1 以上のプランを作成することをお勧めします。 詳細については、Azure SQL Database リソース制限および SQL データベースの価格

  • レポートジョブや ETL ジョブなど、実行時間の長い読み取りクエリを実行するターゲット データベースで同時に実行されるワークロードに対して、読み取りコミット済みスナップショット分離 (RCSI) を使用するようにAzure SQL Databaseを設定します。 これはデータ エクスポート サービスで発生する read\write の競合によるタイムアウト エラーの発生を減少します。

  • クエリのパフォーマンスを向上するため、データ エクスポート サービス データベースの並列処理の最大限度 (MAXDOP) を 1 に設定することをお勧めします。 詳細: MSDN: サーバー メモリ オプション

  • 断片化の量を頻繁に評価し、必要な場合は、データ エクスポート サービス データベース内のインデックスを再構築します。 詳細: インデックスの再編成と再構築

  • データ エクスポート サービス データベース内のテーブルおよびインデックス ビューで、定期的にデータベース統計を更新します。 詳細: 統計の更新

  • データ エクスポート サービス データベースの使用率を監視します。 詳細: パフォーマンス監視

データ同期遅延時間について

データ エクスポート サービスは、データ変更が顧客エンゲージメント アプリで発生するときにプッシュ メカニズムを使用してそれらをリッスンすることで、変更を宛先データベースに同期するように設計されています。 サービスは数分以内にデータを格納しようと努力しますが、エンド ツー エンドの同期遅延時間に影響を及ぼす可能性があるいくつかの要因があります。

同期の期間に影響を与える要因には、以下が含まれます。

  • 顧客エンゲージメント アプリの現在の作業負荷。
  • 顧客エンゲージメント アプリのデータ変化率。
  • 各エクスポート プロファイルとそれらの属性に追加されたエンティティの数。
  • SQL Serverパフォーマンス。 例:
    • SQL 接続セットアップ時間。
    • SQL ステートメントの実行時間。

サービスの監視の基づくと、サービスが以下の条件で提供される場合、ほとんどの進行中の差分同期は 15 分で終了することが観測されています。

  • 発生している同期は差分同期であり、初期同期ではありません。 差分同期の対象は、レコードの作成、更新、および削除のランザクションを含むデータ変更操作のみです。 初期同期が終了すると、差分同期が開始することに注意してください。
  • 顧客エンゲージメント アプリにおけるエクスポート プロファイルのすべてのエンティティのデータ変化率は、1 時間に 3000 レコード未満です。 最大変化率を超えるレコードの一括変更によってデータ変化率が突然増加すると、追加の遅延時間が発生します。
  • エクスポート プロファイルに追加された各エンティティの属性数は 150 未満です。
  • データベース接続または SQL ステートメントの実行が 10 秒未満に終了します。 この制限を超えた場合、追加の遅延時間が発生します。
  • 宛先データベース接続または SQL 実行エラーが同期中に発生しません。

上記の条件が満たされる場合、15 分が一般的な同期遅延時間です。 Microsoft はデータ エクスポート サービスのサービス レベル アグリーメント (SLA) を提供しないので、同期遅延時間に関して保証または確約を行いません。

Azure Key Vaultを設定する方法

Azure アカウント管理者としてここで説明する Windows PowerShell スクリプトを実行して、Azure Key Vaultにアクセスできるように、Data Export Service 機能にアクセス許可を付与します。 このスクリプトは、connection stringへのアクセスに使用されるエクスポート プロファイルの作成に必要なキー コンテナーの URL を表示します。

スクリプトを実行する前に、次の変数のプレースホルダーを置き換えます。

  • $subscriptionId。 使用するKey Vault リソース グループ。 リソース グループが存在しない場合は、指定した名称で新たなグループが作成されます。 この例では、[ContosoResourceGroup1] が使用されます。

  • $location。 [米国西部] などの、リソース グループまたはあるべき場所を指定します。

  • $connectionString。 Azure SQL Databaseへの接続文字列。 AZURE ダッシュボードに表示される ADO.NET connection string を使用できます。

  • $organizationIdList = 許可された組織のコンマ区切り一覧は、データ エクスポート サービスを有効化する組織 ID (organizationId) を一覧表示します。 組織の ID を調べるには、設定>カスタマイズ>開発者リソースの順に移動します。 組織 ID は、環境の参照情報にあります。

  • $tenantId。 Key Vault サブスクリプションのAzure Active Directory テナント ID を指定します。

重要

Azure サブスクリプションには、複数のAzure Active Directoryテナント ID を含めることができます。 データエクスポートに使用する環境に関連付けられている適切なAzure Active Directoryテナント ID を選択していることを確認します。

注意

$connectionString内で参照されているユーザー ID に、ターゲット Azure SQL データベースに対する適切なアクセス許可があることを確認します。

# -------------------------------------------------------------------------------- #
    #  Provide the value for the following parameters before executing the script
$subscriptionId = 'ContosoSubscriptionId'    
$keyvaultName = 'ContosoKeyVault'
    $secretName = 'ContosoDataExportSecret'
    $resourceGroupName = 'ContosoResourceGroup1'
    $location = 'West US'
    $connectionString = 'AzureSQLconnectionString'
$organizationIdList = 'ContosoSalesOrg1_id, ContosoSalesOrg2_id'
$tenantId = 'tenantId'
    # -------------------------------------------------------------------------------- #

# Login to Azure account, select subscription and tenant Id
Connect-AzAccount -Tenant $tenantId -Subscription $subscriptionId

# Create new resource group if not exists.
$rgAvail = Get-AzResourceGroup -Name $resourceGroupName -Location $location -ErrorAction SilentlyContinue
if(!$rgAvail){
    New-AzResourceGroup -Name $resourceGroupName -Location $location
}

# Create new key vault if not exists.
$kvAvail = Get-AzKeyVault -VaultName $keyvaultName -ResourceGroupName $resourceGroupName -ErrorAction SilentlyContinue
if(!$kvAvail){
    New-AzKeyVault -VaultName $keyvaultName -ResourceGroupName $resourceGroupName -Location $location
    # Wait few seconds for DNS entry to propagate
    Start-Sleep -Seconds 15
}

# Create tags to store allowed set of Organizations.
$secretTags = @{}
foreach ($orgId in $organizationIdList.Split(',')) {
    $secretTags.Add($orgId.Trim(), $tenantId)
}

# Add or update a secret to key vault.
$secretValue = ConvertTo-SecureString $connectionString -AsPlainText -Force
$secret = Set-AzKeyVaultSecret -VaultName $keyvaultName -Name $secretName -SecretValue $secretValue -Tags $secretTags

# Authorize application to access key vault.
$servicePrincipal = 'b861dbcc-a7ef-4219-a005-0e4de4ea7dcf'
Set-AzKeyVaultAccessPolicy -VaultName $keyvaultName -ServicePrincipalName $servicePrincipal -PermissionsToSecrets get

# Display secret url.
Write-Host "Connection key vault URL is "$secret.id.TrimEnd($secret.Version)""

すべてのデータ エクスポート プロファイルのテーブルおよびストアド プロシージャの削除方法

重要

この SQL ステートメントを実行する前に @prefix と @schema 値をステートメントに正しく定義していることを確認します。 エクスポート プロファイルは、この SQL ステートメントを実行した後に再作成する必要があります。

-----------------------------------------------------------------
-- Provide the value for the following parameters
DECLARE @prefix nvarchar(32) =''
DECLARE @schema nvarchar(32) ='dbo'
-----------------------------------------------------------------

DECLARE @sql nvarchar(max) = '';

SELECT @sql += 'DROP TABLE ' + QUOTENAME([TABLE_SCHEMA]) + '.' + QUOTENAME([TABLE_NAME]) + ';'
FROM [INFORMATION_SCHEMA].[TABLES]
WHERE [TABLE_TYPE] = 'BASE TABLE' AND [TABLE_NAME] like @prefix + '_%' AND [TABLE_SCHEMA]= @schema;

PRINT @sql
EXEC SP_EXECUTESQL @sql;

PRINT 'Finished dropping all tables. Starting to drop all stored procedures now.'

SELECT @sql='';
SELECT @sql += 'DROP PROCEDURE ' + QUOTENAME([ROUTINE_SCHEMA]) + '.' + QUOTENAME([ROUTINE_NAME]) + ';'
FROM [INFORMATION_SCHEMA].[ROUTINES]
WHERE [ROUTINE_TYPE] = 'PROCEDURE' AND [ROUTINE_NAME] like @prefix + '_%' AND [ROUTINE_SCHEMA]= @schema;
PRINT @sql
EXEC SP_EXECUTESQL @sql;

PRINT 'Finished dropping all stored procedures. Starting to drop all types now.'

SELECT @sql=''; 
SELECT @sql += 'DROP TYPE ' + QUOTENAME(SCHEMA_NAME([SCHEMA_ID])) + '.' +  QUOTENAME([NAME]) + ';'
FROM SYS.TYPES
WHERE is_user_defined = 1 AND [NAME] LIKE @prefix + '_%' AND [SCHEMA_ID]=SCHEMA_ID(@schema);

PRINT @sql
EXEC SP_EXECUTESQL @sql;

特定のエンティティに対するデータ エクスポート プロファイルのテーブルおよびストアド プロシージャの削除方法

重要

この SQL ステートメントを実行する前に @prefix、@schema、@entityName の値をステートメントに正しく定義していることを確認します。 この例では、潜在顧客エンティティのテーブル、種類、およびストアド プロシージャは除外されます。

-----------------------------------------------------------------
-- Provide the value for the following parameters
DECLARE @prefix nvarchar(32) ='crm'
DECLARE @schema nvarchar(32) ='dbo'
DECLARE @entityName nvarchar(32) ='lead'
-----------------------------------------------------------------
DECLARE @sql nvarchar(max) = '';

IF @prefix != '' 
BEGIN
       SET @prefix = @prefix + '_'
END

SELECT @sql += 'DROP TABLE ' + QUOTENAME([TABLE_SCHEMA]) + '.' + QUOTENAME([TABLE_NAME]) + ';'
FROM [INFORMATION_SCHEMA].[TABLES]
WHERE [TABLE_TYPE] = 'BASE TABLE' AND [TABLE_NAME] like @prefix + @entityName  AND [TABLE_SCHEMA]= @schema;
PRINT @sql
EXEC SP_EXECUTESQL @sql;
PRINT 'Finished dropping the entity. Starting to drop the types associated with the entity'

SELECT @sql='';
SELECT @sql += 'DROP TYPE ' + QUOTENAME(SCHEMA_NAME([SCHEMA_ID])) + '.' + QUOTENAME([NAME]) + ';'
FROM SYS.TYPES
WHERE
  is_user_defined = 1
  AND (
    [NAME] LIKE @prefix + @entityName +'Type' 
    OR [NAME] LIKE @prefix + @entityName +'IdType'
  )
  AND [SCHEMA_ID] = SCHEMA_ID(@schema);
PRINT @sql
EXEC SP_EXECUTESQL @sql;

Power Platform の管理から Data Export Service をアンインストールする方法

  1. 高度な設定に移動します。
  2. 設定 > カスタマイズ を選択して、ソリューション を選択します。
  3. Microsoft Dynamics 365 によって発行された DataExportService を選択し、 Delete を選択します。

テナントのMicrosoft Entra IDを見つける

  1. Azure ポータルにサインインします。
  2. Azure サービスTenant properties を選択します。
  3. テナント ID フィールドの値を選択します。

データ エクスポート サービスで使用される Azure SQL データベースの静的 IP アドレス

Azure SQL Databaseで、サーバー ファイアウォールの設定 を選択> Azure へのアクセスを OFF に設定し、 クライアント IP を選択して、環境のリージョンに適した IP アドレスを追加します。 詳細情報: Azure: Azure Portal を使用してAzure SQL Databaseサーバー レベルのファイアウォール規則を構成する

地域 新しい IP アドレス 古い IP アドレス
米国西部 20.245.127.60 13.64.148.9
米国東部 172.174.41.63 20.228.153.81
東アジア 20.239.192.9 104.208.84.217
東南アジア 20.24.15.60 20.205.153.14
インド中部 20.219.158.75 20.198.113.107
インド南部 52.140.54.95 104.211.204.18
西ヨーロッパ 20.126.43.104 40.68.244.253
北ヨーロッパ 20.166.94.137 20.238.83.32
西日本 変更なし 104.214.144.93
東日本 52.253.104.175 20.89.138.246
ブラジル南部 4.228.211.102 20.197.186.17
オーストラリア南東部 変更なし 20.70.112.80
オーストラリア東部 20.5.88.96 20.213.58.3
カナダ中部 20.220.227.230 20.151.173.107
カナダ東部 40.86.216.207 52.229.109.91
イギリス西部 51.142.173.150 20.68.113.18
イギリス南部 20.117.159.198 20.117.89.184

注意

北米のお客様は、米国東部および米国西部の両方の承認済みリストに IP アドレスを追加する必要があります。

データ同期の中断を防ぐために、お客様は新しい IP アドレスと古い IP アドレスを保持する必要があります。

既知の問題

削除されたレコードは、再同期が失敗した後にエンティティ テーブルに再挿入される場合があります。

再同期の失敗から回復した場合、以前に削除されたレコードが元のエンティティ テーブルに再挿入される場合があります。 同期エラーの問題を回避するには、次の手順を実行してください。

  1. Write Delete Log が有効化されたエクスポート プロフィルを作成します。 Write Delete Log が有効化されていない既存のエクスポート プロフィルを再作成します。

  2. DeleteLog テーブル内のレコードを検索するAzure SQL変換先データベースの SQL クエリを作成して実行します。 1 つ以上のレコードが存在する場合、削除したレコードの存在を意味します。

  3. 1 つ以上のレコードが DeleteLog テーブルにある場合は、DeleteLog テーブルにあるレコードのレコード ID が EntityName テーブルのレコードのレコード ID に一致し、deleteLog の versionNumber が EntityName テーブルのレコードの versionNumber よりも大きい環境を検出する SQL クエリを作成および実行します。 レコード Id が一致している場合、EntityName テーブルからレコードを削除します。 たとえば、DeleteLog テーブルの AccountId 列内のレコード ID が、AccountBase エンティティ テーブルの AccountId 列のレコード ID と一致し、DeleteLog の versionNumber が Account テーブルの versionNumber より大きい場合、AccountBase エンティティ テーブルからレコードを削除します。

    重要

    ビジネス ニーズと要件に応じて、レコード削除の SQL クエリを頻繁に実施することをお勧めしますが、非運用の時間中には実施しないでください。

    エンティティ レコードを削除するためのクエリの例。

DELETE A FROM [dbo].[prefix_account] A
WHERE id IN (SELECT CONVERT(uniqueidentifier, recordid) FROM [dbo].[prefix_DeleteLog] DL WHERE DL.entityname ='account'
AND DL.VersionNumber > A.VersionNumber)

データ エクスポートをサポートしないエンティティ

ここに記載されたエンティティは変更履歴をサポートしますが、データ エクスポート サービスを使用したデータ エクスポートはサポートされません。

エンティティ テーブル名 代替策
活動​ ActivityPointerBase 電話、予定、電子メール、およびタスクなどの、エクスポートに特定の活動エンティティを選択します。

許容された最大の行サイズ (8K) を超える行を作成できない

エラー ログに「行の最大許容サイズ 8060 より大きいサイズ (size) の行を作成できない」と表示される場合、行の最大許容サイズの制限を超えています。 データ エクスポートのサービスは、8k の行最大許容サイズを超えた行サイズをサポートしていません。 この問題を軽減するには、行サイズの制限を超えていないことを確認する必要があります。

ソースの文字列の長さは、ColumnName の宛先スキーマより長くなります。

エラー ログに「ソースの文字列の長さが [ColumnName, MaxDataLength] の宛先スキーマより長い」と表示される場合、ソースの文字列の長さが宛先よりも長いという問題が発生しています。 ソース データの文字列の長さが宛先よりも長い場合、宛先への書き込みは失敗します。この問題を軽減するには、データサイズを小さくするか、列の長さを手動で MaxLength より増やす必要があります。

添付ファイルのサポートはありません

Annotation テーブルでの documentbody などの添付ファイルのエクスポートはサポートされていません。

プライバシー通知

Data Export Service を使用すると、Dynamics 365内からデータ エクスポート プロファイルをアクティブ化すると、プロファイルに追加されたエンティティのデータがAzureに送信されます。 最初の同期には、エクスポート プロファイルに追加されたエンティティに関連付けられているすべてのデータが含まれますが、以降の同期には、データ エクスポート サービスに継続的に送信される新しく加えられた変更のみが含まれます。 Data Export Service に送信されたデータは、Azure Service BusとAzure Storageに一時的に格納され、Azure Service Fabricで処理され、最終的に、Azure サブスクリプションで指定されたコピー先データベースに同期 (挿入、更新、または削除) されます。 データが同期されると、データはAzure Service BusおよびAzure Storageから削除されます。 データ同期中にエラーが発生した場合は、エンティティの種類、レコード ID、および同期タイムスタンプに対応する最小限のデータがAzure Storageに格納され、更新されなかったレコードの一覧をダウンロードできます。

管理者は任意のタイミングでデータ エクスポート プロファイルを非アクティブ化し、データ同期を停止できます。 さらに、管理者はエクスポート プロファイルを削除してエラーが発生したレコードのログを削除し、データ エクスポート サービス ソリューションをアンインストールしてデータ エクスポート サービスの使用を停止できます。

データ同期は、Dynamics 365と Data Export Service の間で安全な方法で継続的に行われます。 データは、Dynamics 365とデータ エクスポート サービスの間で継続的に交換されるため、暗号化されます。

データ エクスポート サービスに関連するコンポーネントとサービスAzure、以下のセクションで詳しく説明します。

Microsoft Azure セキュリティ センター

Azure Service Fabric

これにより、API とコンピューティング Azure VM は、Dynamics 365から受信したレコード同期通知を処理し、それらを処理して宛先データベースにレコード データを挿入、更新、または削除します。 Azure Service Fabric ランタイムによって管理される仮想マシンにデプロイされたマイクロ サービスは、データ同期に関連するすべてのコンピューティング サービスを処理します。

Azure Service Bus

これにより、Dynamics 365がAzure Service Fabricのコンピューティング ノードによって処理される同期通知メッセージを挿入するメッセージ バスが提供されます。 各メッセージには、同期するための組織 ID やレコードなどのデータの情報が保存されます。 Azure Service Bus内のデータは保存時に暗号化され、Data Export Service によってのみアクセスできます。

Azure Blob Storage

レコード同期通知のデータが大きすぎてメッセージに格納できない場合、または同期通知を処理するために一時的なエラーが発生した場合、データはAzure Blob Storageに一時的に格納されます。 これらの BLOB は、対称および非対称暗号化のサポートとAzure Key Vaultとの統合を提供する、Azure Storage SDK の最新の機能を利用して暗号化されます。

Azure SQL

Azure SQL Databaseには、データ エクスポート プロファイルの構成とデータ同期のメトリックが格納されます。

参照

エンティティの関連付けの概要
データ エクスポート サービス
チームのブログ: データ エクスポート サービス