Datenexportservice

Hinweis

Mit Wirkung vom November 2021 wurde der Datenexportdienst eingestellt. Der Datenexportdienst funktioniert weiterhin und wird vollständig unterstützt, bis er im November 2022 das Ende des Supports und das Ende der Lebensdauer erreicht. Weitere Informationen: https://aka.ms/DESDeprecationBlog

Der Datenexport ist ein Add-On-Service, der von der Microsoft Dataverse-Lösung bereitgestellt wird und der die Möglichkeit gibt, Dataverse-Daten auf einen Microsoft Azure-SQL-Datenbankspeicher in einem kundeneigenen Microsoft Azure-Abonnement zu replizieren. Die unterstützten Ziele sind Microsoft Azure SQL-Datenbank und Microsoft Azure SQL Server auf virtuellen Microsoft Azure-Computern. Der Datenexport synchronisiert das gesamte Dataverse-Schema und die anfänglichen Daten intelligent und synchronisiert danach auf fortlaufender Basis, wenn Änderungen (Delta-Änderungen) in Dataverse erfolgen.

Der Datenexportservice bietet eine Schnittstelle zum Verwalten der Konfiguration und der laufenden Verwaltung dieses Services innerhalb von Dataverse. Weitere Informationen finden Sie unter Replizieren von Daten in die Azure SQL-Datenbank. In diesem Thema werden die entsprechenden programmgesteuerte Benutzeroberfläche und die Probleme für diesen Service behandelt.

Voraussetzungen für die Verwendung des Datenexport-Service

Da dieser Service einen externen Zugriff auf die Microsoft Azure-SQL-Datenbank vom Dataverse erfordert, müssen einige Voraussetzungen erfüllt sein, bevor Sie erfolgreich auf den Service zugreifen können. Die folgenden Voraussetzungen werden im Detail aus Sicht eines Administrators erläutert im Abschnitt Voraussetzungen für die Verwendung des Datenexport-Service-.

Ihre Dataverse-Umgebung muss entsprechend konfiguriert sein:

Hinweis

Der programmatische Zugriff auf diesen Dienst erfordert nicht die Installation der zugehörigen Data Export Managed Solution.

Die SQL Azure Ziel Datenbank muss konfiguriert werden, damit:

  • Das Abonnement muss die Menge der Daten, die von Ihrer Dataverse-Instanz repliziert werden, unterstützen.

  • Firewalleinstellungen muss den Zugriff von der IP-Adresse des Datenexportservice erlauben. Weitere Informationen: Eine Azure SQL Datenbankserverstufen-Firewallregel mithilfe von Azure Portal konfigurieren.

  • Es wird empfohlen, die Option "Zugriff an Azure Services" aktiviert zu lassen.

  • Der Datenbankbenutzer, der in der Datenexportverbindungszeichenfolge definiert ist, muss die richtigen Berechtigungen verfügen, um auf der Zieldatenbank zu erstellen und zu ändern. Dazu gehören mindestens: CRTB, CRTY, CRVW, CRPR, ALUS, und 'VWDS'. Weitere Informationen finden Sie unter Berechtigungen (Database Engine).

  • Mindestens ein Benutzer muss Berechtigungen für das Schema haben. Im folgenden Skript wird ein neuer Benutzer erstellt.

  
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  
  

Für online Lösungen und Services stellt Azure einen Key Vault-Service bereit, um kryptografische Schlüssel, Kennwörter und andere Geheimnisse zu schützen. Um Vault Azure zu verwenden, muss dieser kundeneigene Service konfiguriert sein, damit die Berechtigung für "Dynamics 365-Datenexport-Service" gewährt wird, das verwendet wird, um die SQL Azure-Verbindungszeichenfolge sicher zu speichern. Um diese Konfiguration mit einem PowerShell-Skript ausführen, siehe Einrichten von Azure Key Vault. Alternativ kann dieser Service über die REST-API verwaltet werden; sehen Sie dazu Key Vault-Verwaltung.

Es ist ratsam, dass die Domäne https://discovery.crmreplication.azure.net/ der Liste der vertrauenswürdigen Websites in Ihrem Browser hinzugefügt und Popups für diesen Ort aktiviert werden.

Programmierung für den Datenexport-Service

Der Datenexport-Dienst stellt eine REST-basierte API zur Verfügung, die in zwei Gruppen unterteilt ist: eine Reihe von Metadata-Operationen zum Erkunden von Dataverse-Organisationsstruktur, Beziehungen und Verbindungsinformationen und eine Reihe von Profiles-Operationen zum Konfigurieren und Verwalten jeder Datenreplikation. Die API ist in den folgenden Swagger URLs definiert und dokumentiert: Swaggern von URLs:

Swagger-Endpunkt Beschreibung
https://discovery.crmreplication.azure.net/swagger/docs/2016-01-01 JSON-Definition der Datenexport-Service API zur Verwendung mit Entwicklertools und dynamische Prozesse
https://discovery.crmreplication.azure.net/swagger/ui/index# Die benutzerfreundliche Version dieser API als Entwicklerreferenz

API Kurzübersicht

Diese Schnittstellen werden für den Benutzer in den folgenden Tabellen zusammengefasst.

Metadaten-Vorgänge (https://discovery.crmreplication.azure.net/crm/exporter/metadata/)

Ressource Methoden Beschreibung
Organisationen GET Ruft Organisationsdetails für alle Organisationen ab, zu denen der aktuelle Benutzer gehört
Entdecken GET GET Organisationsdetails für die angegebene Organisation abrufen.
Power BI-Connector GET GET holt Konnektor-Details für die angegebene Organisation.
entities GET Ruft alle exportierbaren öffentlichen Tabellen für die angegebene Organisation ab.
Beziehungen GET Holen Sie alle exportierbaren Beziehungen für die angegebene Organisation.
hasorgacceptedprivacyterms GET Prüfen, ob die zugehörige Organisation die Datenschutzbestimmungen akzeptiert hat.
acceptprivacyterms NACHRICHT Akzeptieren Sie die angegebene Organisation für den Datenzugriff.

Profilvorgänge ([ConnectorURL]/crm/exporter/)

Ressource Methoden Beschreibung
Profile GET, POST Hole alle Profile für die angegebene Organisation, erstelle ein neues Exportprofil.
Profile/{id} GET, PUT, DELETE Holen, aktualisieren oder löschen Sie ein bestimmtes Profil.
Profile/{id}/aktivieren NACHRICHT Aktivieren eines Profils, das die Replikation sowohl der zugehörigen Tabellendefinitionen als auch der Daten startet.
Profile/{id}/Metadaten aktivieren NACHRICHT Aktivieren Sie das Profil nur für die Replikation von Tabellendefinitionen.
Profile/{id}/Daten aktivieren NACHRICHT Aktivieren Sie ein Profil nur für die Datenreplikation.
Profile/{id}/deaktivieren NACHRICHT Deaktivieren Sie ein Profil.
Profile/{id}/Test GET Führen Sie Testoperationen an einem vorhandenen Profil durch.
Profile/überprüfen NACHRICHT Führen Sie Testoperationen an einer Profilbeschreibung durch, bevor Sie sie erstellen.
Profile/{id}/Fehler GET Abrufen der Verbindungszeichenfolge zu einem Blob, der Fehlerdetails für ein bestimmtes Profil enthält.

Zugriff erhalten

Da nur Dataverse-Systemadministratoren die Autorisierung besitzen, Datenexportvorgänge auszuführen, erzwingen diese APIs die Aufruferautorisierung durch die Nutzung von Microsoft Entra ID-Sicherheitstoken. Der folgende Codeausschnitt wird zeigt das Generieren eines Tokens für eine Webanwendung. Sie müssen resource und AppId-Werte durch die Werte ersetzen, die Ihrem Dienst entsprechen. Diese Methode kann für die Entwicklung und Tests verwendet werden, aber für die Produktion sollten sicherere Methoden wie Azure Key Vault genutzt werden.

using Microsoft.Identity.Client;

string resource = "https://contoso.api.crm.dynamics.com"; // Target environment
var AppId = "51f81489-12ee-4a9e-aaae-a2591f45987d";
var redirectUri = "http://localhost"; // Loopback for the interactive login.

// MSAL authentication
var authBuilder = PublicClientApplicationBuilder.Create(AppId)
    .WithAuthority(AadAuthorityAudience.AzureAdMultipleOrgs)
    .WithRedirectUri(redirectUri)
    .Build();
var scope = resource + "/user_impersonation";
string[] scopes = { scope };

// Use interactive username and password prompt
AuthenticationResult token =
    authBuilder.AcquireTokenInteractive(scopes).ExecuteAsync().Result;
string accessToken = token.AccessToken;

Anweisungen, wie Sie eine AppId erhalten, finden Sie unter Autorisieren des Zugriffs auf Webanwendungen mithilfe von OAuth 2.0 und Microsoft Entra ID. Weitere Informationen zur Azure-Benutzersicherheit finden Sie unter Authentifizierungsszenarien für Microsoft Entra ID.

Fehlerbehandlung und Fehlerverarbeitung

Sobald ein Profil korrekt konfiguriert ist, ist die Synchronisierung normalerweise sehr zuverlässig. Wenn ein Datensatz nicht synchronisiert, gilt die folgende Fehlerverarbeitung:

  1. Nach dem konfigurierten Wiederholungsintervall wird ein weiterer Versuch den Datensatz zu synchronisieren gemacht. Dies wird für die konfigurierte maximale Anzahl von Wiederholungen versucht.

  2. Der Datensatz wird als verarbeitet gekennzeichnet.

  3. Ein entsprechender Fehlereintrag wird das Fehlerprotokoll geschrieben.

  4. Der nächste Datensatz wird verarbeitet.

Da der Datensatz als verarbeitet markiert ist, wird kein zukünftiger Versuch gemacht, den Datensatz zu synchronisieren bis der Wert oder das Schema geändert wird. (Hinweis, dass das Schreiben von identischen Werten zurück in eine Tabelle als bearbeitet gekennzeichnet wird.)

Die Einträge im Fehlerprotokoll sind schreibgeschützt. Zukünftige Erfolge oder Fehler während der Synchronisierung im gleichen Datensatz bedeuten führen nicht zur Ändern von alten Einträgen für diesen Datensatz. Beispielsweise bleibt ein Fehlereintrag im Fehlerprotokoll, selbst wenn der Datensatz erfolgreich während eines späteren Synchronisierungszyklus synchronisiert wurde.

Achtung

Diese Fehlerablauflogik kann sich in zukünftigen Versionen des Dienstes ändern.

Diese Fehlereinträge können über die Anforderung Rufen Sie die für gegebenes Fehlerdetails ein Profil ab abgerufen werden. Die Antwort gibt eine URI für einen Azure-Blob zurück, der Fehlerinformationen enthält. Jede Zeile umfasst die folgenden Felder durch Kommas getrennten Felder (Zeilenumbrüche aus Gründen der Übersichtlichkeit hinzugefügt):

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

Beispiel:

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

Siehe auch

Ihre Daten in Dynamics 365 verwalten
Importieren von Daten

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).