使用資料匯出服務將資料複寫至 Azure SQL Database

Note

自 2021 年 11 月起,資料匯出服務已被取代。 在 2022 年 11 月達到支援終止和生命週期終止前,資料匯出服務將繼續運作並獲得完整支援。 其他資訊:https://aka.ms/DESDeprecationBlog

Data Export Service 是 Microsoft AppSource 上提供的一項附加服務,它增加了將資料從 Microsoft Dataverse 資料庫複製到客戶擁有的 Azure 訂閱中的 Azure SQL Database 儲存的功能。 支援的目標目的地是在 Azure 虛擬機器上的 Azure SQL Database 及 SQL Server。 Data Export Service 一開始以智慧型的方式將整個資料同步,之後隨著系統中發生的變更 (差異變更) 持續同步 。 這有助於在 Azure 資料上啟用數個分析與報表案例,透過分析資料和服務,並為客戶和合作夥伴開拓新的可能性來建立自訂解決方案。

Note

強烈建議您使用 Azure Synapse Link for Dataverse 將 Dataverse 資料匯出至 Azure Synapse Analytics 分析和/或 Azure Data Lake Gen2。 其他資訊:加速深入解析 Azure Synapse Link for Dataverse 的時間

您可以將 Data Export Service 與客戶參與應用程式 (Dynamics 365 Sales、Dynamics 365 Customer Service、Dynamics 365 Field Service、Dynamics 365 Marketing 和 Dynamics 365 Project Service Automation) 一起使用。

如需管理設定及系統管理之程式設計介面的詳細資訊,請參閱開發人員指南中的Data Export Service

使用 Data Export Service 的先決條件

若要開始使用 Data Export Service,必須先滿足下列先決條件。

Azure SQL Database 服務

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

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

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

    對於 Azure VM 上的 SQL Server,您應啟用 [透過網際網路連線至 SQL Server] 選項。 其他資訊:Azure:連線至 Azure 上的 SQL 伺服器虛擬機器

    此外,還要設定您的防火牆規則,以允許資料匯出服務與 SQL Server 之間的通訊。

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

    需要資料庫權限。

    權限類型代碼 權限名稱
    CRTB 建立資料表
    CRTY 建立類型
    CRVW 建立檢視
    CRPR 建立程序
    ALUS 修改任何使用者
    VWDS 檢視資料庫狀態

    需要結構描述權限。

    權限類型代碼 權限名稱
    AL 修改
    IN 插入
    DL 刪除
    SL 選取
    UP 更新
    EX 執行
    RF 參考

Azure 金鑰保存庫服務

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

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

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

  • 設定您的防火牆規則,以允許資料匯出服務與 Azure Key Vault 之間的通訊。

客戶參與應用程式

  • 版本 9.0 或更新版本的環境。

  • 必須安裝 Data Export Service 解決方案。

    • 移至設定>Microsoft Appsource> 搜尋或瀏覽至 Microsoft Dynamics 365 - Data Export Service,然後選取立即取得
    • 或者,在 Microsoft AppSource 尋找它。
  • 將新增至匯出設定檔的實體必須啟用變更追蹤。 若要確保標準或自訂實體能夠同步,請移至自訂>自訂系統,然後犬選取實體。 在一般索引標籤上,確認資料服務區段底下的變更追蹤選項已啟用。

  • 您必須在環境中具有系統管理員資訊安全角色。

網頁瀏覽器

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

所需的服務、認證及權限

若要使用 Data Export Service 功能,您必須有下列服務、認證和權限。

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

  • 包含下列服務的 Azure 訂閱。

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

    • Azure Key Vault。

重要

若要使用資料匯出服務,客戶參與應用程式和 Azure Key Vault 服務必須在相同的租用戶下及相同的 Microsoft Entra ID 中操作。 其他資訊:Azure 與 Microsoft 365 整合

Azure SQL Database 服務與服務可以在相同或不同的用戶中。

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

  • 每當對環境執行下列任何動作時,您都必須刪除然後再重新建立匯出設定檔。

    • 還原環境。
    • 複製 (完整或最小) 環境。
    • 重設環境。
    • 將環境移到其他國家或區域。

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

  • Data Export Service 不適用於啟用系統管理模式設定為開啟的沙箱或生產環境。 其他資訊:管理模式

  • 發生下列動作時,Data Export Service 不會卸除 (刪除) 目的地 Azure SQL Database 中相關聯的資料表、資料行或預存程序物件。

匯出設定檔

為了要從客戶參與應用程式匯出資料,系統管理員會建立匯出設定檔。 可以建立多個設定檔並啟動,將資料同時同步到不同的目的地資料庫。

匯出設定檔是 Data Export Service 的核心概念。 匯出設定檔收集安裝和設定資訊,將資料與目的地資料庫同步。 在匯出設定檔的過程中,系統管理員會提供要匯出到目的地資料庫的實體清單。 啟動後,匯出設定檔就會開始自動同步處理資料。 一開始會匯出對應所選取的每一個實體的所有資料。 之後只有在客戶參與應用程式中的實體記錄或中繼資料發生變更時,才會使用推送機制以幾乎即時的方式持續同步資料變更。 因此您不需要設定排程從客戶參與應用程式擷取資料。

只有已啟用變更追蹤的實體可新增至匯出設定檔。 請注意,大多數擷取資料的標準實體都已啟用變更追蹤。 自訂實體必須明確啟用變更追蹤,才能新增至匯出設定檔。 詳細資訊:啟用變更追蹤以控制資料同步

Data Export Service 會進行資料和中繼資料的同步處理。 每個實體會翻譯成一個表格,而每個欄位會翻譯成目的地資料庫資料表的欄。 資料表和欄名稱會使用中繼資料的結構描述名稱。

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

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

類別 功能 支援的資料類型
初始同步 中繼資料 - 基本資料類型 整數、浮點數、十進位數、單行文字、多行文字、日期和時間資料類型。
初始同步 中繼資料 - 進階資料類型 貨幣、PartyList、選項組、狀態、狀態原因、查詢 (包括客戶和相關類型查詢)。 PartyList 僅適用於匯出 8.1 以上版本。
初始同步 資料 - 基本類型 所有基本資料類型。
初始同步 資料 - 進階類型 所有進階資料類型。
差異同步 修改結構描述 - 基本類型 新增或修改欄位變更,所有基本資料類型。
差異同步 修改結構描述 - 進階類型 新增或修改欄位變更,所有進階資料類型。
差異同步 修改資料 - 基本類型 所有基本資料類型。
差異同步 修改資料 - 進階類型 所有進階資料類型,例如 PartyList。

建立匯出設定檔

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

  • Data Export Service 解決方案已安裝在您的環境中。

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

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

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

  • 您是環境的系統管理員。

  1. 移至設定>資料匯出

  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 (多對多) 關聯,這些關聯與您在前一個步驟中選取的實體並存。 選取下一步

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

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

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

修改現有的匯出設定檔

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

  1. 移至設定>資料匯出

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

    選取匯出設定檔。

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

    管理實體或實體關聯。

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

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

  5. 選取更新將您的變更送出至匯出設定檔。

重要

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

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

Data Export Service 會為資料和中繼資料建立資料表。 資料表是針對每一個實體和同步的 M:N 關聯建立。

啟用匯出設定檔後,這些表格會在目的地資料庫中建立。 這些是系統資料表,因此無法新增 SinkCreatedTime 和 SinkModifiedTime 欄位。

資料表名稱 建立日期
<Prefix>_GlobalOptionsetMetadata 在啟用匯出設定檔時。
<Prefix>_OptionsetMetadata 在啟用匯出設定檔時。
<Prefix>_StateMetadata 在啟用匯出設定檔時。
<Prefix>_StatusMetadata 在啟用匯出設定檔時。
<Prefix>_TargetMetadata 在啟用匯出設定檔時。
<Prefix>_AttributeMetadata 在啟用匯出設定檔時。
<Prefix>_DeleteLog 啟動匯出設定檔時,若已啟用 [刪除記錄] 選項。

解決同步處理問題

即使重複嘗試數次,記錄同步處理仍可能因為長時間執行查詢,而從資料庫儲存限制或表格鎖定發生失敗。 若要解決這些失敗,您可以強制僅重新同步處理失敗的記錄,或重新同步處理所有記錄。

  1. 檢視您的匯出設定檔,尋找任何記錄同步處理失敗的項目。 做法是檢視 [同步處理] 區域中的資料設定檔,或是開啟匯出設定檔,就像這個設定檔,當中有連絡人實體記錄同步處理失敗。

    DataExport_failed_records_exist。

  2. 檢查同步處理失敗的來源,然後解決它。 其他資訊:錯誤處理和監控

  3. 問題解決後,重新同步處理失敗的記錄。

    Note

    失敗的記錄同步處理是公開預覽功能。

    • 預覽功能不供生產時使用,而且可能功能受限。 這些功能是在正式發行前先行推出,讓客戶能夠搶先體驗並提供意見反應。
      • 這項功能可能會變更,因此您不應該在生產時使用此功能。 只能在測試和開發環境中使用。
      • Microsoft 不支援此預覽功能。 Microsoft Dynamics 365 技術支援無法協助您處理問題。 預覽功能不適合投入生產使用,並且受到個別補充使用條款的規範。
    1. 登入環境,然後移至設定>資料匯出

    2. 開啟包含記錄同步處理失敗的匯出設定檔。

    3. 在 [匯出設定檔] 工具列上選取重新同步失敗的記錄

    4. 成功重新同步失敗的記錄後,在確認對話方塊上選取確定

    成功重新同步處理的通知。

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

    零記錄失敗表示。

  4. 如果您依照上述步驟嘗試重新同步處理後,依舊發生記錄同步處理失敗,請連絡 Microsoft 客戶支援服務

錯誤處理和監控

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

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

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

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

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

  1. 移至設定>資料匯出

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

    失敗的通知。

  3. 在 [動作]工具列上選取失敗的記錄

    失敗記錄工具列按鈕。

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

    下載失敗的記錄對話方塊。

    注意

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

  5. 啟動 Azure Storage Explorer。

  6. 在 Azure Storage Explorer 中選取連線至 Azure 儲存體

  7. 從剪貼簿將 URL 貼至連接至 Azure Storage 方塊中,然後選取下一步

    儲存空間 URL。

  8. 在 [連接摘要] 頁面上選取連接

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

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

您可以直接從資料匯出服務使用者介面中下載失敗的記錄。 此功能目前為預覽功能,如果您能測試一下並提供意見反應,就太好了。

下載失敗記錄的步驟

  1. 找出有失敗記錄的設定檔。

    資料匯出設定檔。

  2. 選取設定檔,然後從上方功能表列選取下載失敗記錄 (預覽)

    下載失敗的記錄 (預覽)。

  3. 下載失敗記錄對話方塊中,您會看到最後 20 個 (最多) 二進位大型物件 (blob) 檔案的排序清單。 選取您要下載的檔案,然後選擇確定

    下載失敗的記錄。

  4. 下載之後,使用您選擇的文字編輯器 (例如,[記事本]) 開啟檔案,並檢視失敗詳細資料。

    範例錯誤記錄。

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

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

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

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

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

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

  • 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. 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 的同步處理逾時。 這可能發生在初次同步處理資料匯出設定檔期間,當一次處理大量資料時。 發生這個問題時,請重新同步處理失敗的記錄。 解決同步處理問題

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

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

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

  • 為了改善查詢效能,我們建議將 Data Export Service 資料庫平行處理原則的最大程度 (MAXDOP) 設定為 1。 其他資訊:MSDN:伺服器記憶體選項

  • 經常評估分散片段的數量,並在必要時,重建 Data Export Service 資料庫的索引。 其他資訊:重組和重建索引

  • 定期更新 Data Export Service 資料庫中資料表和索引檢視表的相關資料庫統計資料。 其他資訊:更新統計資料

  • 監視 Data Export Service 資料庫的使用率。 其他資訊:效能監控

關於資料同步處理延遲

Data Export Service 的架構設計是藉由在客戶參與應用程式發生變更時加以聆聽,再使用推送機制將資料變更同步處理到目的地資料庫。 服務會盡力在幾分鐘內推送資料,但還是有一些可能會影響端對端同步處理延遲的因素。

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

  • 客戶參與應用程式目前的工作負荷。
  • 客戶參與應用程式中的資料變更率。
  • 新增至每個匯出設定檔之實體及其屬性的數目。
  • SQL Server 效能。 例如:
    • SQL 連接設定時間。
    • SQL 陳述式執行時間。

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

  • 發生的同步處理是差異同步處理,而不是初始同步處理。 差異同步處理僅用於資料變更作業,包括建立記錄、更新記錄和刪除交易。 請注意,初始同步處理完成後,差異同步處理就會開始。
  • 匯出設定檔中所有實體在客戶參與應用程式中的最大資料變動率是少於每小時 3000 筆記錄。 任何因大量變更記錄資料使變動率突然增加而超出最大資料變動率的情況,都會造成額外的延遲。
  • 每個新增至匯出設定檔的實體,其屬性少於 150 個。
  • 資料庫連接或 SQL 陳述式執行不到 10 秒即完成。 如果超過此限制,將會產生額外延遲。
  • 同步處理期間未發生任何目的地資料庫連接或 SQL 執行錯誤。

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

如何設定 Azure 金鑰保存庫

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

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

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

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

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

  • $organizationIdList = 允許的組織的逗號分隔清單,依組織識別碼 (organizationId) 列出,要對 Data Export Service 啟用。 若要尋找組織的識別碼,移至設定>自訂>開發人員資源。 組織識別碼位於環境參考資訊底下。

  • $tenantId。 指定 Key Vault 訂閱所屬的 Azure Active Directory 租用戶識別碼。

重要

Azure 訂閱可以有多個 Azure Active Directory 租用戶識別碼。 請確定您選取正確的 Azure Active Directory 租用戶識別碼,與將用於資料匯出的環境相關聯。

Note

確保 $connectionString 中參考的使用者識別碼對目標 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 解除安裝資料匯出服務

  1. 瀏覽至 [進階] 設定。
  2. 選取設定 > 自訂,然後選取解決方案
  3. 選擇 Microsoft Dynamics 365 發佈的 DataExportService,然後選擇刪除

尋找您的用戶的 Microsoft Entra 用戶識別碼

  1. 登入 Azure 入口網站
  2. 選取 Azure 服務下的用戶屬性
  3. 選取用戶屬性欄位中的值。

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

在 Azure SQL Database 中選取設定伺服器防火牆,將允許存取 Azure 服務切換到,選取新增用戶端 IP,然後新增適用您環境所在地區的 IP 位址。 其他資訊:Azure:使用 Azure 入口網站設定 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. 建立匯出設定檔,並啟用寫入刪除記錄。 重新建立現有的匯出設定檔,但不啟用寫入刪除記錄。

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

不支援資料匯出的實體

這裡列出的實體儘管支援變更追蹤,但不支援使用 Data Export Service 進行資料匯出。

Entity 資料表名稱 解決方法
活動 ActivityPointerBase 選取要匯出的特定活動實體,例如通話、約會、電子郵件和工作。

無法建立大於列允許大小上限 (8 K) 的列

如果錯誤記錄顯示「無法建立大小為 (size) 的資料列,此列大於允許的資料列大小上限 8060」,表示您遇到超過列最大允許大小限制的問題。 資料匯出服務不支援超過 8 k 最大允許列大小的列大小。 若要補救此問題,您必須確保遵守列大小限制。

來源中字串的長度比 ColumnName 目的地結構描述還要長

如果您的錯誤記錄顯示「來源中字串的長度比 [ColumnName, MaxDataLength] 目的地結構描述還要長」,表示您遇到來源資料字串長度大於目的地的問題。 如果來源資料的字串長度大於目的地,寫入目的地將會失敗。若要補救此問題,您需要減少資料大小,或是在資料庫中手動將欄長度增加到大於 MaxLength。

不支援附件

不支持在註釋資料表上匯出文件正文等附件。

隱私權通知

如果您從 Dynamics 365 內啟用資料匯出設定檔時使用 Data Export Service,則加入至此設定檔之實體的資料會傳送到 Azure。 初始同步處理包含與加入至此匯出設定檔之實體相關聯的所有資料,但是之後的同步處理只會包含新的變更,這些變更會持續傳送到資料匯出服務。 傳送到 Data Export Service 的資料會暫時儲存在 Azure 服務匯流排和 Azure 儲存體,並於 Azure Service Fabric 中處理,而最後會同步處理 (插入、更新或刪除) 至您的 Azure 訂閱中所指定的目的地資料庫。 當資料同步處理之後,就會從 Azure Service Bus 和 Azure 儲存體中加以刪除。 如果在資料同步處理期間發生失敗,則對應至實體類型、記錄識別碼和同步處理時間戳記的最少量資料會儲存在 Azure 儲存體中,以便下載尚未更新的記錄清單。

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

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

下列章節會詳細說明與資料匯出服務有關的 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 Key Vault 整合。

Azure SQL

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

另請參閱

實體關聯概觀
資料匯出服務
團隊部落格:資料匯出服務簡介