Microsoft Azure SQL データベースで Microsoft Dynamics 365 (オンライン) データを複製します。

 

公開日: 2017年2月

対象: Dynamics 365 (online)、Dynamics CRM Online

注意

ここで提供する情報は、Dynamics 365 (オンライン) バージョン 9.0 より前の Dynamics 365 のバージョン用です。 最新のドキュメントについては、「Azure SQL データベースでデータを複製」を参照してください。

Microsoft Dynamics 365-データ エクスポート サービス は、Microsoft AppSource で利用できるアドオン サービスです。これは顧客が所有する Microsoft Azure サブスクリプションに保管されている Microsoft Azure SQL Database に Microsoft Dynamics 365 (オンライン) データを複製する機能を追加します。 サポートされている対象先は、Microsoft Azure 仮想マシン上の Microsoft Azure SQL Database および SQL Server です。 [データ エクスポート サービス] は、[Dynamics 365] データ全体をインテリジェントに同期処理し、[Microsoft Dynamics 365 (オンライン)] システムで変更 (差分変更) が発生すると継続的に同期処理します。 これにより、Azure データと組み合わされた Dynamics 365 データと分析サービスに加えて、複数の分析とレポーティングのシナリオを可能にし、顧客とパートナーがカスタム ソリューションを開発する上で新たな機会が開かれます。

注意

次の事柄と共に データ エクスポート サービス を使用できます。

  • Microsoft Dynamics 365 (オンライン)

  • Microsoft Dynamics CRM Online 2016 更新プログラム

[データ エクスポート サービス] の管理と構成プロファイルの管理に対するプログラム インターフェイスについては、「MSDN: データ エクスポート サービス」を参照してください。

このトピックの内容

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

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

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

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

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

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

目的とする Azure SQL データベースのテーブルの詳細

同期の問題の解決

エラー処理と監視

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

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

Azure Key Vault の設定方法

既知の問題と制限

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

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

Azure SQL データベース サービス

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

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

    また、[Azure サービスへのアクセスを許可する] をオンにし、すべての Azure サービス アクセスを許可できます。

    [Azure] VM 上の [SQL Server] については、[インターネット経由で SQL Server を接続する] オプションを有効にする必要があります。 詳細については、「Microsoft Azure: Azure (従来の展開) で SQL サーバー仮想マシンに接続する」を参照してください。

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

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

    アクセス許可の種類コード

    アクセス許可の名前

    CRTB

    テーブルの作成

    CRTY

    種類の作成

    CRVW

    ビューの作成

    CRPR

    手順の作成

    ALUS

    ALTER ANY USER

    VWDS

    データベース状態の表示

    必要なスキーマ アクセス許可。

    アクセス許可の種類コード

    アクセス許可の名前

    AL

    ALTER

    IN

    挿入

    DL

    Del

    SL

    選択

    UP

    更新

    EX

    実行

    RF

    参照

Azure Key Vault サービス

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

  • ID [b861dbcc-a7ef-4219-a005-0e4de4ea7dcf] を伴うアプリケーションの Grant PermissionsToSecrets アクセス許可。 これは、以下の [AzurePowerShell] コマンドを実行して完了することができ、接続文字列を含む [ Key Vault] のアクセスに使用されます。詳細:Azure Key Vault の設定方法

  • Key Vault は、[Microsoft Dynamics 365] 組織 (OrgId) とテナント ID (TenantId) でタグ付けされる必要があります。 これは、以下の [AzurePowerShell] コマンドを実行して完了することができます。詳細:Azure Key Vault の設定方法

Microsoft Dynamics 365 (オンライン)

  • Microsoft Dynamics CRM Online 2016 更新プログラム またはそれ以降のバージョンのインスタンス。

  • データ エクスポート サービス ソリューションがインストールされている必要があります。 「Microsoft AppSource」から今すぐ入手してください。

  • エクスポート プロファイル に追加されるエンティティが変更追跡と共に有効にされている必要があります。 [カスタマイズ] > [システムのカスタマイズ] に移動してエンティティをクリックすることにより、標準またはカスタムのエンティティを同期できることを確認します。 [全般] タブが、[データ サービス] セクションの [変更履歴] オプションで有効になっていることを確認します。

  • [Microsoft Dynamics 365 (オンライン)] のインスタンスでは、システム管理者セキュリティ ロールを所有している必要があります。

Web ブラウザー

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

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

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

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

  • Microsoft Azure サブスクリプションには次のサービスが含まれます。

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

    • Azure Key Vault。

重要

データ エクスポート サービス、Microsoft Dynamics 365 (オンライン) を使用するには Azure Key Vault サービスが同じテナントの下で、また同じ Microsoft Azure Active Directory で実行されている必要があります。詳細:Office 365 と Azure の統合

Azure SQL Database サービスは Microsoft Dynamics 365 (オンライン) サービスと同じまたは異なるテナントを使用できます。

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

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

    • インスタンスを復元します。

    • インスタンスをコピーします (完全または最小のいずれか)。

    • インスタンスをリセットします。

    • インスタンスを別の国または地域に移動します。

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

  • [管理者モードを有効化する] が有効化されている設定の Microsoft Dynamics 365 (オンライン) サンドボックス インスタンスでは データ エクスポート サービス は使用できません。詳細:管理モード

  • 次のアクションが発生するとき、データ エクスポート サービス は目的の Azure SQL Database 内で関連付けされたテーブル、列、またはストアド プロシージャ オブジェクトをドロップ (削除) しません。

    • エンティティは Microsoft Dynamics 365 (オンライン) 内で削除されます。

    • フィールドは Microsoft Dynamics 365 (オンライン) 内で削除されます。

    • エンティティは エクスポート プロファイル から削除されます。

    これらのアイテムは手動でドロップする必要があります。特定のエンティティに対するデータ エクスポート プロファイルのテーブルおよびストアド プロシージャの削除方法

    メタデータの削除通知は unprocessablemessages フォルダーに記録されます。エラー処理と監視

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

[Microsoft Dynamics 365 (オンライン)] からデータをエクスポートするには、[Microsoft Dynamics 365 (オンライン)] 管理者が [エクスポート プロファイル] を作成します。 複数のプロファイルを作成してアクティブ化することで、異なる転送先データベースへ同時にデータを同期させることができます。

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

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

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

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

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

カテゴリ

機能

サポートされているデータの種類

初期同期

メタデータ - 基本的なデータの種類

整数、浮動小数点数、10 進数、1 行テキスト、複数行テキスト、日時のデータ型。

初期同期

メタデータ - 高度なデータの種類

通貨、PartyList、オプション セット、状態、ステータス、検索 (顧客および関連の種類検索)。 PartyList は、バージョン 8.1 以降のみエクスポートの利用ができます。

初期同期

データ - 基本的な種類

すべての基本データの種類。

初期同期

データ - 高度なデータの種類

すべての高度なデータの種類。

差分同期

スキーマの変更 - 基本的な種類

フィールドの変更点、すべての基本的なデータの種類を追加または修正します。

差分同期

スキーマの変更 - 高度な種類

フィールドの変更点、すべての高度なデータの種類を追加または修正します。

差分同期

スキーマの変更 - 基本的な種類

すべての基本データの種類。

差分同期

スキーマの変更 - 高度な種類

PartyList など、すべての高度なデータの種類。

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

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

  • [データ エクスポート サービス] ソリューションが、[Microsoft Dynamics 365 (オンライン)] インスタンスにインストールされます。

  • [ Key Vault] の [SQL データベース] 接続文字列を維持し、[エクスポート プロファイル] で提供される [ Key Vault] URL をコピーします。 詳細については、「Microsoft Azure: Azure Key Vault の開始」を参照してください。

  • [エクスポート プロファイル] に追加されるエンティティは、変更の追跡が有効になります。詳細:変更の追跡を有効にしてデータ同期を制御する

  • [SQL データベース] サービスには、[Microsoft Dynamics 365] データを保存するために必要な記憶域があります。

  • あなたは、[Microsoft Dynamics 365 (オンライン)] インスタンスのシステム管理者です。

  1. [Microsoft Dynamics 365 (オンライン)] では、[設定] > [データ エクスポート] の順に移動します。

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

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

  4. [プロパティ] 手順 では、次の情報を入力し、[ Key Vault] を接続せずに [次へ] をクリックして続行します。 [検証] をクリックし、[ Key Vault] への接続を提供する [ Key Vault] URL を使用します。

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

    • [Key Vault 接続 URL]。 転送先データベースを接続するために使用される資格情報を保存する接続文字列を指す [ Key Vault] URL です。 このフィールドは必須です。詳細:Azure Key Vault の設定方法

      重要

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

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

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

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

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

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

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

  5. [エンティティの選択] ステップで、転送先 [SQL データベース] にエクスポートしたいエンティティを選択し、[ 次へ] をクリックします。

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

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

    輸出プロフィールの作成 - リレーションシップの管理 - リレーションシップの選択

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

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

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

重複する既存の エクスポート プロファイル からエンティティおよび関連付けを追加または削除できます。

  1. Microsoft Dynamics 365 (online) では、[設定] > [データ エクスポート] の順に移動します。

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

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

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

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

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

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

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

重要

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

目的とする Azure SQL データベースのテーブルの詳細

[データ エクスポート サービス] は、データとメタデータのテーブルを作成します。 テーブルには、各エンティティと同期される M:N の関連付けが作成されます。

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

テーブル名

作成済み

<プレフィックス>_GlobalOptionsetMetadata

エクスポート プロファイル のアクティブ化。

<プレフィックス>_OptionsetMetadata

エクスポート プロファイル のアクティブ化。

<プレフィックス>_StateMetadata

エクスポート プロファイル のアクティブ化。

<プレフィックス>_StatusMetadata

エクスポート プロファイル のアクティブ化。

<プレフィックス>_TargetMetadata

エクスポート プロファイル のアクティブ化。

<プレフィックス>_AttributeMetadata

エクスポート プロファイル のアクティブ化。

<プレフィックス>_DeleteLog

ログの削除オプションが有効化された場合に、エクスポート プロファイル をアクティブ化します。

同期の問題の解決

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

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

    DataExport_failed_records_exist

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

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

    注意

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

    • プレビュー機能は完全ではない機能ですが、顧客が早くアクセスし、フィードバックを送信できるように、正式リリースの前に利用できるようにしています。 プレビュー機能は、運用環境での使用を想定しておらず、機能が制限される可能性があります。

    • この機能は変更される予定であるため、運用環境では使用しないでください。 開発環境およびテスト環境に限ってご使用ください。

    • Microsoft はこのプレビュー機能のサポートを提供しません。 Microsoft Dynamics 365 テクニカル サポートでは、問題や質問への対応ができません。 プレビュー機能は運用環境での使用を想定しておらず、別個の追加使用条件が適用されます。

    1. Microsoft Dynamics 365 (オンライン) インスタンスにサインインし、[設定] > [データ エクスポート] に移動します。

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

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

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

      再同期成功の通知

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

      ゼロは失敗を記録します

  4. 以前の手順に従って再同期を試行した後もレコードの同期の失敗が続く場合、テーブルをドロップし、入力し、目的のデータベースからプロシージャを保存し、次に削除し、エクスポート プロファイル にエンティティを再度追加します。

    1. 目的の Azure SQL Database で関連するデータベース オブジェクトを削除します。 たとえば、見込みエンティティ同期の問題が永続的に発生している場合、見込みテーブルをドロップし、入力し、目的の Azure SQL Database からプロシージャを保存します。詳細:特定のエンティティに対するデータ エクスポート プロファイルのテーブルおよびストアド プロシージャの削除方法

    2. 潜在顧客エンティティなどのエンティティを エクスポート プロファイル から削除します。詳細:既存のエクスポート プロファイルの変更

    3. 潜在顧客エンティティなどのエンティティを追加し、エクスポート プロファイル に戻り、プロファイルをアクティブ化します。

エラー処理と監視

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

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

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

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

失敗したレコード ログの表示は同期エラーの原因を特定する助けになります。 送信先の Azure 宛先データベースで失敗したレコードを表示するには、Azure Storage データの使用を簡単にするフリー スタンドアロン アプリケーションである Microsoft Azure Storage Explorer を使用します。 詳細: Microsoft Azure Storage Explorer

  1. [Dynamics 365] では、[設定] > [データ エクスポート] の順に移動します。

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

    失敗した通知数

  3. [操作] ツール バーで、[既定として設定] をクリックします。

    失敗したレコードのツールバー ボタン

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

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

    注意

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

  5. Microsoft Azure Storage Explorer を起動します。

  6. Microsoft Azure Storage Explore で、[Azure Storage へ接続する] をクリックします。

  7. クリップボードから URL を [Azure Storage へ接続する] ボックスにペーストし、[次へ] をクリックします。

    ストレージ URL

  8. [Connection Summary] ページで、[接続] をクリックします。

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

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

失敗したレコードの Azure Blob Storage の URL は、次のフォルダー構造がある場所を指します。

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

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

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

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

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

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

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

エンティティ: 取引先担当者、RecordId: 459d1d3e-7cc8-e611-80f7-5065f38bf1c1、NotificationTime: 12/28/2016 12:32: 39 AM、ChangeType: 更新プログラム、FailureReason: データベース「tempdb」はサイズの予算に達しました。 データを分割または削除、インデックスをドロップ、または解決方法のドキュメントを参照します。 ステートメントが終了しました。

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

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

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

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

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

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

  • リソース調整による同期エラーを防ぐために、Azure SQL Database Premium P1 または データ エクスポート サービス を使用する場合より適切なプランの使用をお勧めします。詳細:Azure SQL Database リソース制限 および SQL Database Pricing

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

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

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

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

  • Dynamics 365 の現在の作業負荷。

  • Dynamics 365 でのデータ変化率。

  • 各エクスポート プロファイルとそれらの属性に追加されたエンティティの数。

  • SQL Server のパフォーマンス。 たとえば、次のようになります。

    • SQL 接続セットアップ時間。

    • SQL ステートメントの実行時間。

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

  • 発生している同期は差分同期であり、初期同期ではありません。 差分同期の対象は、レコードの作成、更新、および削除のランザクションを含むデータ変更操作のみです。 初期同期が終了すると、差分同期が開始することに注意してください。

  • Dynamics 365 でのエクスポート プロフィールのすべてのエンティティのデータ変化率は、1 時間に 3000 レコード未満です。 最大変化率を超えるレコードの一括変更によってデータ変化率が突然増加すると、追加の遅延時間が発生します。

  • エクスポート プロファイルに追加された各エンティティの属性数は 150 未満です。

  • データベース接続または SQL ステートメントの実行が 10 秒未満に終了します。 この制限を超え束愛、追加の遅延時間が発生します。

  • 宛先データベース接続または SQL 実行エラーが同期中に発生しません。

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

Azure Key Vault の設定方法

ここで記載される [Windows PowerShell] スクリプトを実行するには、[データ エクスポート サービス] 機能のアクセス許可を持つ [Azure] アカウント管理者が Azure Key Vault にアクセスするかもしれません。 このスクリプトは、接続文字列のアクセスに使用される [エクスポート プロファイル] を作成するために必要な Key Vault URL を表示します。

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

  • $subscriptionId。 サブスクリプション ID [Azure]。 サブスクリプション ID は、ログイン AzureRmAccount のコマンドを実行するときに表示されます。

  • $keyvaultName。 [ Key Vault] で、既存または新規の名前を選択します。 名前は、[ Key Vault] の参照として使用されます。 この例では、[ContosoKeyVault] が使用されます。 その他 [ Key Vault] コマンドレットでは、この名前が使用されます。

  • $secretName。 [ Key Vault] で、ソフトウェア保護キーを使用する名前を指定します。 保護キーが存在しない場合は、指定された秘密の名前を使用して作成されます。 この例では、[ContosoDataExportSecret] が使用されます。

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

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

  • $connectionString。 [Microsoft Azure SQL Database] への接続文字列。 [Azure] ダッシュボードに表示される場合は、ADO.NET 接続文字列を使用できます。

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

  • $tenantId。Microsoft Dynamics 365 インスタンスを関連付ける Azure Active Directory テナント ID を指定します。 詳細: Dynamics 365 インスタンスの Azure Active Directory テナント ID の検索

# -------------------------------------------------------------------------------- #
    #  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
Login-AzureRmAccount
Set-AzureRmContext -TenantId $tenantId -SubscriptionId $subscriptionId

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

# Create new key vault if not exists.
$kvAvail = Get-AzureRmKeyVault -VaultName $keyvaultName -ResourceGroupName $resourceGroupName -ErrorAction SilentlyContinue
if(!$kvAvail){
    New-AzureRmKeyVault -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.
$secretVaule = ConvertTo-SecureString $connectionString -AsPlainText -Force
$secret = Set-AzureKeyVaultSecret -VaultName $keyvaultName -Name $secretName -SecretValue $secretVaule -Tags $secretTags

# Authorize application to access key vault.
$servicePrincipal = 'b861dbcc-a7ef-4219-a005-0e4de4ea7dcf'
Set-AzureRmKeyVaultAccessPolicy -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;

Dynamics 365 インスタンスの Azure Active Directory テナント ID の検索

  1. Azure ポータルにサインインします。

  2. [Azure Active Directory] > [アプリ登録] > [エンドポイント] の順に移動します。

  3. テナント ID は、Azure のサブスクリプションとともにリストされるエンドポイント URL に表示されます。

重要

Azure のサブスクリプションに、複数の Azure Active Directory テナント ID を持つことができます。 データ エクスポートに使用する Microsoft Dynamics 365 のインスタンスに関連付けられる正しい Azure Active Directory テナント ID を選択していることを確認します。

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

Azure SQL Database では、[ファイアウォール サーバーの設定] をクリックし、[Azure サービスへのアクセスを許可する] を [OFF] にし、[クライアント IP の追加] をクリックし、Azure SQL Database の領域に適した IP アドレスを追加します。詳細:Microsoft Azure: Azure Portal を使用する Azure SQL データベース サーバー レベルのファイアウォール ルールの構成

地域

IP アドレス

米国西部

40.112.139.218

米国東部

23.96.92.86

西ヨーロッパ

40.68.252.224

東アジア

52.175.24.148

東南アジア

52.163.231.218

中央インド

52.172.191.195

南インド

52.172.51.15

北ヨーロッパ

52.169.117.212

西日本

138.91.22.196

東日本

13.73.7.177

南ブラジル

191.235.81.249

オーストラリア南東部

40.115.78.163

オーストラリア東部

13.73.202.160

カナダ中部

52.228.26.31

カナダ東部

40.86.251.81

英国南

51.140.71.166

英国西

51.141.44.218

既知の問題と制限

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

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

  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 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

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

プライバシーに関する声明

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

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

データ同期は Dynamics 365 とデータ エクスポート サービスの間で安全な方法で継続的に発生します。 データが Dynamics 365 とデータ エクスポート サービスの間で継続的に交換される際には暗号化されます。

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

メモ: 追加の Azure サービスについては、Microsoft Azure のトラスト センターを参照してください。

Azure Service Fabric

これは、API を提供して Azure Virtual Machines を計算し、Dynamics 365 から受け取ったレコード同期通知を処理後、それらを処理して送信先のデータベースのレコード データを挿入、更新、または削除します。 Azure Service Fabric ランタイムで管理される仮想マシンに展開されたマイクロサービスは、データ同期に関連するすべてのコンピューティング サービスを処理します。

Azure Service Bus

これは、Dynamics 365 が Azure Service Fabric のコンピューティング ノードで処理される同期通知メッセージを挿入する、メッセージ バスを提供します。 各メッセージに、組織 ID やレコードなど、同期するデータの情報が保存されます。 Azure Service Bus のデータは、保管時に暗号化はされませんが、データ エクスポート サービスによるアクセスのみが可能です。

Azure Blob Storage

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

Azure SQL

Azure SQL Database はデータ エクスポート プロファイルの構成とデータ同期の指標を保存します。

関連項目

AppSource: Microsoft Dynamics 365 - データ エクスポート サービス
Dynamics 365 の新機能 ‒ データ エクスポート サービス?
データの管理
MSDN: データ エクスポート サービス
チームのブログ: Dynamics 365 の概要 – データ エクスポート サービス

© 2017 Microsoft. All rights reserved. 著作権