分享方式:


資料匯出服務

 

發佈日期: 2017年1月

適用對象: Dynamics 365 (online)

資料匯出是附加服務,做為 Microsoft Dynamics 365 (線上) 解決方案提供,在客戶擁有的 Microsoft Azure 訂閱中新增將 Dynamics 365 (線上) 資料複寫至 Microsoft Azure SQL Database 存放區的功能。 支援的目標目的地是 Microsoft Azure 虛擬機器上的 Microsoft Azure SQL Database 和 Microsoft Azure SQL Server。 資料匯出一開始以智慧型的方式將整個 Dynamics 365 結構描述資料同步,之後再於 Microsoft Dynamics 365 (線上) 系統發生變更時持續同步 (差異變更)。

資料匯出服務會提供介面,用於管理此服務的設定及持續管理工作,從 Dynamics 365 (線上) 內。 如需詳細資訊,請參閱 TechNet:資料匯出。 本主題說明此服務對應的程式設計介面和問題。

使用資料匯出服務的先決條件

因為此服務需要從 Dynamics 365 (線上) 存取外部 Microsoft Azure SQL Database,所以必須先滿足一些先決條件,才能成功存取此服務。 下列先決條件主要是從管理員的角度加以說明,在 TechNet:使用資料匯出服務的先決條件一節中。

您必須先設定 Dynamics 365 (線上) 服務,然後:

  • 您必須具有 Microsoft Dynamics 365 (Online) 的 2016 年 12 月更新 或更新版本的執行個體,以及原始或完整的資料複本。 如需詳細資訊,請參閱複製執行個體

  • 將匯出的實體會啟用變更追蹤。 如需詳細資訊,請參閱使用變更追蹤,同步處理資料與外部系統

  • 程式碼會以具有系統管理員資訊安全角色的使用者內容中執行。

備註

請注意,以程式化方式存取此服務需要安裝相關的資料匯出受管理解決方案。

目標 Azure SQL Database 必須設定,然後:

  • 訂閱必須支援要從 Dynamics 365 執行個體複寫的資料量。

  • 防火牆設定必須允許從您的資料匯出服務的 IP 位址存取。 如需詳細資訊,請參閱使用 Azure 入口網站設定 Azure SQL Database 伺服器層級防火牆規則

  • 建議啟用 [允許存取 Azure 服務] 選項。

  • 資料匯出連接字串中指定的資料庫使用者必須對目標資料庫有適當的建立和修改權限。 這些至少包括:CRTBCRTYCRVWCRPRALUS。 如需詳細資訊,請參閱權限 (資料庫引擎)

  • 至少一個使用者擁有結構描述的完整權限。 下列指令碼會建立這類新使用者。

USE MASTER;
CREATE LOGIN NewUser WITH PASSWORD='newpassword';

USE DESTINATIONDATABASE;
CREATE USER NewUser FOR LOGIN NewUser
GRANT CREATE TABLE, CREATE TYPE, CREATE VIEW, CREATE PROCEDURE, ALTER ANY USER to NewUser
GRANT ALTER, REFERENCES, INSERT, DELETE, UPDATE, SELECT, EXECUTE ON SCHEMA::dbo TO NewUser

若是線上解決方案和服務,Azure 會提供金鑰保存庫服務來保護加密編譯金鑰、密碼和其他秘密。 若要使用 Azure 金鑰保存庫,此客戶擁有的服務必須設定,以便將權限授與「Dynamics 365 資料匯出服務」,此服務用來安全地儲存 SQL Azure 連接字串。 若要使用 PowerShell 指令碼執行這項設定,請參閱 TechNet︰如何設定 Azure 金鑰保存庫。 或者,此服務可以透過其 REST API 管理;請參閱金鑰保存庫管理

另外也建議您新增網域 https://discovery.crmreplication.azure.net/ 至瀏覽器中信任的網站清單,並啟用此網站的快顯視窗。

針對資料匯出服務程式設計

資料匯出服務會公開 REST API,它分成兩個群組:一組 Metadata 作業,用於探索 Dynamics 365 組織架構、關聯以及連線資訊;以及一組 Profiles 作業,用於設定和管理每個資料複寫。 此 API 完整定義並記載於下列 Swagger URL:

Swagger 端點

描述

https://discovery.crmreplication.azure.net/swagger/docs/2016-01-01

資料匯出服務 API 的 JSON 定義供開發人員工具和動態程序使用

https://discovery.crmreplication.azure.net/swagger/ui/index#

此易用的 API 版本可供開發人員參考

API 快速參考

為了方便讀者,這些介面摘要整理於下表。

中繼資料作業 (https://discovery.crmreplication.azure.net/crm/exporter/metadata/)

資源

方法

描述

組織

取得

取得目前使用者所屬所有組織的組織詳細資料

探索

取得

取得所指定組織的組織詳細資料

連接器

取得

取得所指定組織的連接器詳細資料

實體

取得

取得所指定組織的所有可匯出公用實體

關聯

取得

取得所指定組織的所有可匯出關聯

hasorgacceptedprivacyterms

取得

檢查關聯的組織是否已接受隱私權條款

acceptprivacyterms

張貼

接受指定的組織存取資料

設定檔作業 ([Organization-URI]/crm/exporter/)

資源

方法

描述

設定檔

GETPOST

取得所指定組織的所有設定檔,建立新的匯出設定檔

profiles/{id}

GETPUTDELETE

取得、更新或刪除特定設定檔

profiles/{id}/activate

張貼

啟用設定檔,它會開始複寫相關聯的中繼資料和資料

profiles/{id}/activatemetadata

張貼

僅啟用設定檔進行中繼資料複寫

profiles/{id}/activatedata

張貼

僅啟用設定檔進行資料複寫

profiles/{id}/deactivate

張貼

停用設定檔

profiles/{id}/test

取得 Yammer

對現有設定檔執行測試作業

profiles/validate

張貼

在建立之前對設定檔描述執行測試作業

profiles/{id}/failures

取得 Yammer

取得二進位大型物件 (blob) 的連接字串,當中包含所指設定檔的失敗詳細資料

取得存取權

因為只有 Dynamics 365 系統管理員經授權可執行資料匯出作業,所以這些 API 會透過使用 Azure Active Directory (AAD) 安全性權杖強制執行呼叫端授權。 下列程式碼片段使用管理員的名稱和密碼示範針對 Web 應用程式產生這類權杖。 您必須將 AppIdcrmAdminUsercrmAdminPassword 取代微適合您的服務的值。 此方法可用於開發和測試,但是對於生產應使用更安全的方法,像是使用 Azure 金鑰保存庫。

//Reference Azure AD authentication Library (ADAL)  
using Microsoft.IdentityModel.Clients.ActiveDirectory;
   . . .
    string yourAppClientID = "[app-associated-GUID]";   //Your AAD-registered AppId 
    string crmAdminUser = "admin1@contoso.com";  //Your CRM administrator user name
    string crmAdminPassword = "Admin1Password";  //Your CRM administrator password; 
    //For interactive applications, there are overloads of AcquireTokenAsync() which prompt for password. 
    var authParam = AuthenticationParameters.CreateFromResourceUrlAsync(new 
        Uri("https://discovery.crmreplication.azure.net/crm/exporter/aad/challenge")).Result;
    AuthenticationContext authContext = new AuthenticationContext(authParam.Authority, false);
    string token = authContext.AcquireTokenAsync(authParam.Resource, yourAppClientID, 
        new UserCredential(crmAdminUser, crmAdminPassword)).Result.AccessToken;

如需如何取得 AppId 的指示,請參閱使用 OAuth 2.0 和 Azure Active Directory 授權存取 Web 應用程式。 如需 Azure 使用者安全性的詳細資訊,請參閱 Azure AD 的驗證案例

錯誤處理和失敗處理

一旦設定檔正確設定,同步處理程序通常是很可靠。 不過,如果記錄同步處理失敗,則適用下列失敗處理:

  1. 在設定的重試間隔之後,就會再次嘗試同步處理記錄。 此程序會重複,直到設定的最大重試數目為止。

  2. 記錄會標記為已處理。

  3. 對應的失敗記錄重試會寫入錯誤記錄檔中。

  4. 接著會處理下一筆記錄。

由於記錄標記為已處理,因此不會再繼續嘗試同步處理記錄,直到其值或結構描述變更。 (請注意,將相同值寫回實體執行個體也會將它標記為已修改)。

錯誤記錄檔中的項目是唯寫。 未來同步處理相同記錄時,無論成功或失敗,並不會導致此記錄過去的項目遭到修改。 例如,失敗項目將保留在錯誤記錄檔中,即使記錄已在後續同步處理週期中成功同步處理。

注意

此錯誤處理邏輯會隨著此服務未來的版本而改變。

這些失敗項目可透過取得所指設定檔的失敗詳細資料要求擷取。 回覆會傳回 Azure Blob 的 URI,當中包含失敗資訊。 每一行都有下列逗號分隔欄位 (加入換行更清楚):

Entity: <entity-name>, 
RecordId: <”N/A” | guid>, 
NotificationTime: <datetime>, 
ChangeType: <sync-type>,
FailureReason: <description>

例如:

Entity: lead, 
RecordId: N/A, NotificationTime: , ChangeType: Trigger Initial Export, FailureReason: There is already an object named 'hatest201_lead' in the database.
Entity: account, RecordId: b2a19cdd-88df-e311-b8e5-6c3be5a8b200, NotificationTime: 8/31/2016 6:50:38 PM, ChangeType: New, FailureReason: Invalid object name 'dbo.hatest201_account'.

另請參閱

在 Microsoft Dynamics 365 中管理您的資料
匯入資料

Microsoft Dynamics 365

© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權