將 Microsoft Dynamics 365 (線上) 資料複寫至 Microsoft Azure SQL Database

 

發行︰ 2017年2月

適用於: Dynamics 365 (online)、Dynamics CRM Online

注意

這裡提供的資訊適用於在 Dynamics 365 (線上) 9.0 版之前的 Dynamics 365 版本。 如需最新文件,請參閱將資料複寫至 Azure SQL Database

Microsoft Dynamics 365-資料匯出服務 是附加服務,在 Microsoft AppSource 上提供,在客戶擁有的 Microsoft Azure 訂閱中新增將 Microsoft Dynamics 365 (線上) 資料複寫至 Microsoft Azure SQL Database 存放區的功能。 支援的目標目的地是在 Microsoft Azure 虛擬機器上的 Microsoft Azure SQL Database 及 SQL Server。資料匯出服務 一開始以智慧型的方式將整個 Dynamics 365 資料同步,之後再於 Microsoft Dynamics 365 (線上) 系統發生變更時持續同步 (差異變更)。 這有助於在 Dynamics 365 資料上啟用數個分析與報表案例,透過 Azure 分析資料和服務,並為客戶和合作夥伴開拓新的可能性來建立自訂解決方案。

注意

您可以使用 資料匯出服務 搭配:

  • Microsoft Dynamics 365 (線上)

  • Microsoft Dynamics CRM Online 2016 更新

如需管理資料匯出服務設定和系統管理的程式設計介面的相關資訊,請參閱 MSDN:資料匯出服務

本主題內容

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

所需的服務、認證及權限

使用資料匯出服務之前應該知道的事項

匯出設定檔

建立匯出設定檔

修改現有的匯出設定檔

目的地 Azure SQL Database 的資料表詳細資料

解決同步處理問題

錯誤處理和監控

使用 Azure SQL Database 搭配資料匯出時的最佳做法

關於資料同步處理延遲

如何設定 Azure 金鑰保存庫

已知問題和限制

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

若要開始使用資料匯出服務,必須先滿足下列先決條件。

Azure SQL Database 服務

  • 客戶擁有的 Azure SQL Database 訂閱。 此訂閱必須允許同步的資料量。

  • 防火牆設定。 我們建議您關閉 [允許存取 Azure 服務],並指定本主題中列出的適當用戶端 IP 位址。 其他資訊:資料匯出服務使用的 Azure SQL 資料庫靜態 IP 位址

    或者,您可以開啟 [允許存取 Azure 服務],允許所有 Azure 服務存取。

    若是 Azure VM 上的 SQL Server,則應啟用 [透過網際網路連線至 SQL Server] 選項。 其他資訊:Microsoft Azure:連線至 Azure 上的 SQL Server 虛擬機器 (傳統部署)

  • 根據下列資料表,資料庫使用者必須具有資料庫和結構描述層級的權限。 資料庫使用者用於資料匯出連接字串。

    需要資料庫權限。

    權限類型代碼

    權限名稱

    CRTB

    建立資料表

    CRTY

    建立類型

    CRVW

    建立檢視

    CRPR

    建立程序

    ALUS

    修改任何使用者

    VWDS

    檢視資料庫狀態

    需要結構描述權限。

    權限類型代碼

    權限名稱

    AL

    修改

    IN

    插入

    DL

    刪除

    SL

    選取

    UP

    更新

    EX

    執行

    RF

    參考

Azure 金鑰保存庫服務

  • 客戶擁有的 Azure 金鑰保存庫 訂閱,用來安全地維護資料庫連接字串。

  • 將 PermissionsToSecrets 權限授與識別碼為 "b861dbcc-a7ef-4219-a005-0e4de4ea7dcf" 的應用程式。 這可以藉由執行下列 AzurePowerShell 命令完成,並且用來存取包含連接字串密碼的 金鑰保存庫。其他資訊:如何設定 Azure 金鑰保存庫

  • 金鑰保存庫應標記 Microsoft Dynamics 365 組織 (OrgId) 和用戶識別碼 (TenantId)。 這可以藉由執行下列 AzurePowerShell 命令完成。其他資訊:如何設定 Azure 金鑰保存庫

Microsoft Dynamics 365 (線上)

  • Microsoft Dynamics CRM Online 2016 更新 或更新版本的執行個體。

  • 必須安裝 資料匯出服務 解決方案。 立即從 Microsoft AppSource 取得。

  • 將新增至 匯出設定檔 的實體必須啟用變更追蹤。 若要確保標準或自訂實體能夠同步,請移至 [自訂] > [自訂系統],然後按一下實體。 在 [一般] 索引標籤上,確認 [資料服務] 區段底下的 [變更追蹤] 選項已啟用。

  • 您必須在 Microsoft Dynamics 365 (線上) 執行個體中具有系統管理員資訊安全角色。

網頁瀏覽器

在您的網頁瀏覽器中啟用網域 https://discovery.crmreplication.azure.net/ 的快顯視窗。 若要在瀏覽到 [設定] > [資料匯出] 時自動登入,這是必要的。

所需的服務、認證及權限

若要使用 資料匯出服務 功能,您必須有下列服務、認證和權限。

  • Microsoft Dynamics 365 (線上) 訂閱。 只有獲指派 Microsoft Dynamics 365 系統管理員資訊安全角色的使用者,才可以設定或變更匯出設定檔。

  • 包含下列服務的 Microsoft Azure 訂用帳戶。

    • Azure SQL Database 或 AzureSQL Server,在 Azure 虛擬機器上。

    • Azure 金鑰保存庫。

重要

若要使用資料匯出服務,Microsoft Dynamics 365 (線上) 和 Azure 金鑰保存庫 服務必須以相同的用戶並在相同的 Microsoft Azure Active Directory 中操作。其他資訊:Azure 與 Office 365 整合

Azure SQL Database 服務與 Microsoft Dynamics 365 (線上) 服務可以在相同或不同的用戶中。

使用資料匯出服務之前應該知道的事項

  • 每當對 Microsoft Dynamics 365 (線上) 執行個體執行下列任何動作時,您都必須刪除然後再重新建立匯出設定檔。

    • 還原執行個體。

    • 複製 (完整或最小) 執行個體。

    • 重設執行個體。

    • 將執行個體移到其他國家或地區。

    若要這樣做,請刪除 EXPORT PROFILES 檢視表中的匯出設定檔,然後刪除表格和預存程序,再建立新的設定檔。其他資訊:如何刪除所有資料匯出設定檔資料表和預存程序

  • 資料匯出服務 不適用 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 實體都已啟用變更追蹤。 自訂實體必須明確啟用變更追蹤,才能新增至匯出設定檔。其他資訊:啟用變更追蹤以控制資料同步處理

資料匯出服務會進行資料和中繼資料的同步處理。 每個實體會翻譯成一個表格,而每個欄位會翻譯成目的地資料庫資料表的欄。 資料表和欄名稱會使用 Microsoft Dynamics 365 中繼資料的結構描述名稱。

啟動後,匯出設定檔會收集資料同步處理的統計資料,有助於所匯出資料的操作可見度和診斷。

透過匯出設定檔可進行的資料同步處理

類別

功能

支援的資料類型

初始同步

中繼資料 - 基本資料類型

整數、浮點數、十進位數、單行文字、多行文字、日期和時間資料類型。

初始同步

中繼資料 - 進階資料類型

貨幣、PartyList、選項組、狀態、狀態原因、查詢 (包括客戶和相關類型查詢)。 PartyList 僅適用於匯出 8.1 以上版本。

初始同步

資料 - 基本類型

所有基本資料類型。

初始同步

資料 - 進階類型

所有進階資料類型。

差異同步

修改結構描述 - 基本類型

新增或修改欄位變更,所有基本資料類型。

差異同步

修改結構描述 - 進階類型

新增或修改欄位變更,所有進階資料類型。

差異同步

修改資料 - 基本類型

所有基本資料類型。

差異同步

修改資料 - 進階類型

所有進階資料類型,例如 PartyList。

建立匯出設定檔

確定符合下列需求,再建立匯出設定檔。

  • 資料匯出服務 解決方案安裝在 Microsoft Dynamics 365 (線上) 執行個體中。

  • 維護 金鑰保存庫 中的 SQL Database 連接字串,並複製 金鑰保存庫 URL 以在匯出設定檔中提供。 其他資訊:Microsoft Azure:開始使用 Azure 金鑰保存庫

  • 要新增至匯出設定檔的實體已啟用變更追蹤。其他資訊:啟用變更追蹤以控制資料同步處理

  • 您的 SQL Database 服務有足夠的儲存空間可存放 Microsoft Dynamics 365 資料。

  • 您是 Microsoft Dynamics 365 (線上) 執行個體中的系統管理員。

  1. 在 Microsoft Dynamics 365 (線上) 中,移至 [設定] > [資料匯出]。

  2. 檢閱注意事項,然後按一下 [繼續],或 [取消],如果您不想要匯出資料。

  3. 按一下 [新增] 建立新的匯出設定檔。

  4. 在 [屬性] 步驟中輸入下列資訊,然後按 [下一步] 繼續,但不連線至 金鑰保存庫。 按一下 [驗證] 會使用您提供的 金鑰保存庫 URL 連線至 金鑰保存庫。

    • 名稱。 設定檔的唯一名稱。 這是必填欄位。

    • 金鑰保存庫連線 URL。 指向隨認證一併儲存的連接字串的 金鑰保存庫 URL,用來連線至目的地資料庫。 這是必填欄位。其他資訊:如何設定 Azure 金鑰保存庫

      重要

      金鑰保存庫連線 URL 區分大小寫。 依照顯示正確輸入金鑰保存庫連線 URL,在您執行本主題中的 Windows PowerShell 命令之後。

    • 結構描述。 替代資料庫結構描述的名稱。 只有英數字元有效。 這是選用欄位。 根據預設,dbo 是用於目的地 SQL Database 的結構描述。

    • 首碼。 目的地資料庫中所建立資料表名稱使用的首碼。 這可幫助您輕鬆識別目的地資料庫中為 匯出設定檔 建立的資料表。 指定時,請確定首碼的長度不超過 15 個字元。 這是選擇性欄位,但只允許英數字元。

    • 重試次數。 插入或更新目的地資料表發生錯誤時,可重試記錄的次數。 這是必填欄位。 可接受的值為 0-20,預設值為 12。

    • 重試間隔。 發生錯誤時,在重試前等待的秒數。 這是必填欄位。 可接受的值為 0-3600,預設值為 5。

    • 寫入刪除記錄。 記錄已刪除記錄的選擇性設定。

    [建立匯出設定檔] 對話方塊中的 [屬性] 索引標籤

  5. 在 [選取實體] 步驟中,選取要匯出到目的地 SQL Database 的實體,然後按 [下一步]。

    [建立匯出設定檔] 對話方塊中的 [選取實體] 索引標籤

  6. 在 [選取關聯] 步驟中,您可以同步處理 M:N (多對多) 關聯,這些關聯與您在前一個步驟中所選取實體同時存在。 按一下 [Next]。

    建立匯出設定檔 - 管理關聯 - 選取關聯

  7. 在 [摘要] 步驟中,按一下 [建立並啟用] 建立設定檔記錄並連接至 金鑰保存庫,它會開始同步處理程序。 否則,按一下 [建立],儲存匯出設定檔並於稍後啟用。

    [建立匯出設定檔] 對話方塊中的 [摘要] 索引標籤

修改現有的匯出設定檔

您可以新增或移除想要複寫的現有 匯出設定檔 中的實體和關聯。

  1. 在 Microsoft Dynamics 365 (線上) 中,移至 [設定] > [資料匯出]。

  2. 在 [所有資料匯出設定檔] 檢視表中,選取您要變更的 匯出設定檔。

    選取匯出設定檔

  3. 在 [動作] 工具列上按一下 [管理實體],新增或移除資料匯出的實體。 若要新增或移除實體關聯,請按一下 [管理關聯]。

    管理實體或實體關聯

  4. 選取您要新增或移除的實體或實體關聯。

    選取要新增或移除的實體或實體關聯

  5. 按一下 [更新] 將您的變更送出至 匯出設定檔。

重要

當您從 匯出設定檔 移除實體或實體關聯時,它不會卸除目的地資料庫中對應的表格。 您必須先捨器目的地資料庫中對應的表格,才能再次新增已移除的實體。 若要卸除實體表格,請參閱如何刪除特定實體的資料匯出設定檔資料表和預存程序。

目的地 Azure SQL Database 的資料表詳細資料

資料匯出服務會同時為資料和中繼資料建立資料表。 資料表是針對每一個實體和同步的 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. 成功重新同步失敗的記錄後,在確認對話方塊上按一下 [確定]。

      成功重新同步處理的通知

    5. 確認匯出設定檔未包含失敗的記錄通知,方法是開啟資料匯出設定檔,並檢視 [屬性和概觀] 索引標籤上的 [失敗的通知] 計數器,應該會是 [0]。 按一下匯出設定檔工具列上的 [重新整理],確定 [失敗的通知] 值是最新的。

      零記錄失敗表示

  4. 如果您依照上述步驟嘗試重新同步處理後,記錄同步處理失敗仍發生,請卸除目的地資料庫中的表格、類型和預存程序,然後先移除再加回實體至匯出設定檔。

    1. 刪除目的地 Azure SQL Database 中關聯的資料庫物件。 例如,如果您遇到持續潛在客戶實體同步處理問題,請從 Azure SQL Database 卸除潛在客戶表格、類型和預存程序。其他資訊:如何刪除特定實體的資料匯出設定檔資料表和預存程序

    2. 移除實體,例如潛在客戶實體,從 匯出設定檔。其他資訊:修改現有的匯出設定檔

    3. 新增實體,例如潛在客戶實體,返回 匯出設定檔,然後再啟用設定檔。

錯誤處理和監控

若要檢視匯出設定檔的同步處理狀態,請移至 [設定] > [資料匯出],然後開啟匯出設定檔。 在 [實體] 索引標籤上,同步處理狀態會顯示,包括 [失敗的記錄] 欄,當中是無法同步處理的記錄。 針對所有失敗的記錄,按一下命令列上的 [失敗的記錄],可下載包含狀態原因的記錄清單。

匯出設定檔命令列 - 失敗的記錄按鈕

在匯出設定檔中,您可以按一下 [屬性和概觀] 顯示設定檔的屬性。 按一下 [關聯] 檢視關聯同步處理狀態。

如何檢視無法同步處理的記錄的詳細資訊

檢視失敗的記錄日誌可幫助您判斷同步處理失敗的原因。 若要檢視目的地 Azure 資料庫中失敗的記錄,請使用 Microsoft Azure Storage Explorer 這款免費的獨立應用程式,讓您輕鬆處理 Azure Storage 資料。 詳細資訊:Microsoft Azure Storage Explorer

  1. 在 Dynamics 365 中,移至 [設定] > [資料匯出]。

  2. 在 [所有資料匯出設定檔] 檢視表中,選取有失敗通知的 匯出設定檔。

    失敗的通知

  3. 在 [動作] 工具列上按一下 [失敗的記錄]。

    失敗記錄工具列按鈕

  4. 在 [下載失敗的記錄] 對話方塊中,按一下 [複製 Blob URL],然後按一下 [確定]。

    下載失敗的記錄對話方塊

    注意

    Blob URL 的有效期限為 24 小時。 如果 URL 超過 24 小時期間,請重複前面所述的步驟產生新的 blob URL。

  5. 啟動 Microsoft Azure Storage Explorer。

  6. 在 Microsoft Azure Storage Explorer 中按一下 [連接至 Azure Storage]。

  7. 從剪貼簿將 URL 貼至 [連接至 Azure Storage] 方塊中,然後按 [下一步]。

    儲存空間 URL

  8. 在 [連接摘要] 頁面上按一下 [連接]。

  9. Azure Storage Explorer 會連接到目的地資料庫。 如果 匯出設定檔 有失敗的記錄存在,Azure Storage Explorer 就會顯示失敗的記錄同步處理資料夾。

失敗的記錄同步處理資料夾結構和記錄檔

失敗的記錄 Azure Blob 儲存體 URL 會指向具有下列資料夾結構的位置︰

  • data。 這個資料夾包含失敗的資料通知和記錄資料的相關 JSON。

  • metadata。 這個資料夾包含失敗的中繼資料通知和中繼資料的相關 JSON。

  • failurelog。 這個資料夾包含記錄檔,提供同步處理失敗的資訊,以及發生失敗的原因。

  • forcerefreshfailurelog。 這個資料夾包含上次執行資料匯出服務 [失敗的記錄] 命令的錯誤,該命令用來重新同步處理失敗的記錄。

  • unprocessablemessages。 這個資料夾包含未經處理的資料通知,因為刪除資料或中繼資料和相關的 JSON。

failurelog 和 forcerefreshfailurelog 資料夾已結構化 Year\Month\Day\Hour,因此您可以快速找到最新的錯誤。 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. 分割或刪除資料、卸除索引,或查詢說明文件找出可能的解決方法。 陳述式已終止。

記錄同步處理失敗的常見原因

以下是可能發生記錄同步處理失敗的幾個原因。

  • 目的地資料庫儲存空間不足。 在您嘗試重新同步處理失敗的記錄之前,請先適當增加或釋出 Azure SQL Database 儲存空間。 發生這個問題時,失敗記錄中會記錄類似這樣的訊息。

    資料庫 'databasename' 已達其大小配額。 分割或刪除資料、卸除索引,或查詢說明文件找出可能的解決方法。

  • Azure SQL Database 的同步處理逾時。 這可能發生在初次同步處理資料匯出設定檔期間,當一次處理大量資料時。 發生這個問題時,請重新同步處理失敗的記錄。解決同步處理問題

使用 Azure SQL Database 搭配資料匯出時的最佳做法

  • 為避免因為資源節流而造成同步處理錯誤,建議您使用 Azure SQL Database Premium P1 或更好的方案,當您使用資料匯出服務時。其他資訊:Azure SQL Database 資源限制SQL Database 定價

  • 設定 Azure SQL Database 使用 Read Committed 快照集隔離 (RCSI),針對目的地資料庫上同步執行的長時間執行讀取查詢的工作負載,例如報表和 ETL 作業。 這樣可以減少因為讀取\寫入衝突而使資料匯出服務發生逾時錯誤的情況。

關於資料同步處理延遲

資料匯出服務 在架構上的設計是藉由在 Dynamics 365 發生資料變更時接聽這些變更,再使用推送機制將資料變更同步處理至目的地資料庫。 服務會盡力在幾分鐘內推送資料,但還是有一些可能會影響端對端同步處理延遲的因素。

影響同步處理期間的因素包括下列各項:

  • Dynamics 365 目前的工作負載。

  • Dynamics 365 的資料變動率。

  • 新增至每個匯出設定檔之實體及其屬性的數目。

  • SQL Server 效能。 例如:

    • SQL 連接設定時間。

    • SQL 陳述式執行時間。

根據我們對服務的監控顯示,當服務在下列條件下運作時,大部分的持續差異同步處理都會在 15 分鐘內完成:

  • 發生的同步處理是差異同步處理,而不是初始同步處理。 差異同步處理僅用於資料變更作業,包括建立記錄、更新記錄和刪除交易。 請注意,初始同步處理完成後,差異同步處理就會開始。

  • 匯出設定檔所有實體在 Dynamics 365 中的最大資料變動率小於每小時 3000 筆記錄。 任何因大量變更記錄資料使變動率突然增加而超出最大資料變動率的情況,都會造成額外的延遲。

  • 每個新增至匯出設定檔的實體,其屬性少於 150 個。

  • 資料庫連接或 SQL 陳述式執行不到 10 秒即完成。 如果超過此限制,將會產生額外延遲。

  • 同步處理期間未發生任何目的地資料庫連接或 SQL 執行錯誤。

符合上述條件時,同步處理延遲通常為 15 分鐘。Microsoft 未對資料匯出服務提供服務等級協定 (SLA),並且不做任何關於同步處理延遲時間的保證或承諾。

如何設定 Azure 金鑰保存庫

依照這裡所述,以 Azure 帳戶管理員的身分執行 Windows PowerShell 指令碼,將權限授與資料匯出服務功能,讓它能夠存取您的 Azure 金鑰保存庫。 此指令碼會顯示建立用來存取連接字串的匯出設定檔所需的金鑰保存庫 URL。

在執行指令碼之前,請取代下列變數的預留位置。

  • $subscriptionId。Azure 訂閱識別碼。 訂閱識別碼會在您執行 Login-AzureRmAccount 命令時顯示。

  • $keyvaultName。 為現有或新的 金鑰保存庫 選取名稱。 名稱用來參考 金鑰保存庫。 在此範例中,使用 ContosoKeyVault。 您將對其他 金鑰保存庫 Cmdlet 使用這個名稱。

  • $secretName。 指定用於 金鑰保存庫 的軟體保護金鑰的名稱。 如果受保護的金鑰不存在,則會使用指定的祕密名稱建立。 在此範例中,使用 ContosoDataExportSecret

  • $resourceGroupName。 指定您要使用的 Azure 資源群組的名稱。 如果資源群組不存在,則會使用您指定的名稱建立新的資源群組。 在此範例中,使用 ContosoResourceGroup1

  • $location。 指定資源群組所在或應在的位置,例如美國西部

  • $connectionString。Microsoft Azure SQL Database 的連接字串。 您可以使用 ADO.NET 連接字串,如同在 Azure 儀表板中所顯示。

  • $organizationIdList = 允許的 Microsoft Dynamics 365 組織的逗號分隔清單,依組織識別碼 (organizationId) 列出,要對資料匯出服務啟用。 若要尋找組織的識別碼,在 Microsoft Dynamics 365 中,移至 [設定] > [自訂] > [開發人員資源]。 組織識別碼位於 [執行個體參考資訊] 底下。

  • $tenantId。 指定 Azure Active Directory 用戶識別碼,Microsoft Dynamics 365 執行個體會與其相關聯。 其他資訊:尋找 Dynamics 365 執行個體的 Azure Active Directory 用戶識別碼

# -------------------------------------------------------------------------------- #
    #  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 用戶識別碼

  1. 登入 Azure 入口網站

  2. 移至 [Azure Active Directory] > [應用程式註冊] > [端點]。

  3. 用戶識別碼會顯示在端點 URL 中,與 Azure 訂閱一起列出。

重要

Azure 訂閱可以有多個 Azure Active Directory 用戶識別碼。 請確定您選取正確的 Azure Active Directory 用戶識別碼,與將用於資料匯出的 Microsoft Dynamics 365 執行個體相關聯。

資料匯出服務使用的 Azure SQL 資料庫靜態 IP 位址

在 Azure SQL Database 中按一下 [設定伺服器防火牆],將 [允許存取 Azure 服務] 切換到 [],按一下 [新增用戶端 IP],然後新增適用您 Azure SQL Database 所在地區的 IP 位址。其他資訊:Microsoft Azure:使用 Azure 入口網站設定 Azure SQL Database 伺服器層級防火牆規則

區域

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. 建立匯出設定檔,並啟用寫入刪除記錄。 重新建立現有的匯出設定檔,但不啟用寫入刪除記錄。

  2. 對 Azure SQL 目的地資料庫建立並執行 SQL 查詢,以搜尋 DeleteLog 表格中的記錄。 如果找到一個或多個記錄,表示有已刪除的記錄存在。

  3. 如果有一個或多個記錄存在於 DeleteLog 表格,請建立並執行偵測執行個體的 SQL 查詢,在這些執行個體中,DeleteLog 表格中記錄的記錄識別碼符合 EntityName 表格中記錄的記錄識別碼,而且 DeleteLog 的 versionNumber 大於 EntityName 表格中記錄的 versionNumber。 若資料識別碼相符,請刪除 EntityName 表格中的記錄。 例如,如果 DeleteLog 表格的 AccountId 欄中的記錄識別碼與 AccountBase 實體表格的 AccountId 欄中的記錄識別碼相符,而且 DeleteLog 的 versionNumber 大於 Account table 的 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 服務匯流排 和 Azure 儲存體,並於 Azure Service Fabric 中處理,而最後會同步處理 (插入、更新或刪除) 至您的 Azure 訂閱中所指定的目的地資料庫。 當資料同步處理之後,就會從 Azure 服務匯流排 和 Azure 儲存體中加以刪除。 如果在資料同步處理期間發生失敗,則對應至實體類型、記錄識別碼和同步處理時間戳記的最少量資料會儲存在 Azure 儲存體中,以便下載尚未更新的記錄清單。

管理員隨時都可以停用資料匯出設定檔,以停止資料同步處理。 此外,管理員也可以刪除匯出設定檔來移除任何失敗的記錄,以及解除安裝資料匯出服務解決方案來停止使用資料匯出服務。

在 Dynamics 365 與資料匯出服務之間會以安全的方式持續進行資料同步處理。 在 Dynamics 365 與資料匯出服務之間持續交換資料時,會將資料加密。

下列章節會詳細說明與資料匯出服務有關的 Azure 元件和服務。

**注意:**如需有關其他 Azure 服務供應項目的詳細資訊,請參閱 Microsoft Azure 信任中心

Azure Service Fabric

這會提供 API 和運算 Azure 虛擬機器來處理從 Dynamics 365 收到的記錄同步處理通知,然後加以處理,以便在目的地資料庫中插入、更新或刪除記錄資料。 在由 Azure Service Fabric 執行階段所管理之虛擬機器上部署的微型服務會處理與資料同步處理相關的所有運算服務。

Azure 服務匯流排

其中包括訊息匯流排,Dynamics 365 會將由 Azure Service Fabric 中的運算節點所處理的同步處理通知訊息插入其中。 每個訊息都會儲存同步處理資料的相關資訊,例如組織識別碼和記錄。 Azure 服務匯流排中的資料在閒置時不會加密,但是只能由資料匯出服務加以存取。

Azure Blob 儲存體

資料會暫時儲存在 Azure Blob 儲存體,以防記錄同步處理通知的資料太大而無法儲存在訊息中,或是發生暫時性失敗而無法處理同步處理通知。 這些 Blob 是利用 Azure 儲存體 SDK 的最新功能進行加密,提供對稱和不對稱加密支援以及與 Azure 金鑰保存庫整合。

Azure SQL

Azure SQL Database 會儲存資料匯出設定檔組態和資料同步處理計量。

另請參閱

AppSource:Microsoft Dynamics 365 - 資料匯出服務
Dynamics 365 ‒ 資料匯出服務有哪些新功能?
管理您的資料
MSDN:資料匯出服務
團隊部落格:Dynamics 365 簡介 – 資料匯出服務

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