Service d′exportation de données
Notes
Depuis novembre 2021, le service d’exportation de données est obsolète. Le service d’exportation de données continuera de fonctionner et sera entièrement pris en charge jusqu’à ce qu’il atteigne la fin du support et la fin de vie en novembre 2022. Pour plus d’informations, voir https://aka.ms/DESDeprecationBlog
L′exportation des données est un service complémentaire disponible en tant que solution Microsoft Dataverse qui permet de répliquer les données Dataverse dans un magasin de base de données SQL Microsoft Azure via un abonnement Microsoft Azure appartenant au client. Les destinations cibles prises en charge sont la base de données SQL Microsoft Azure et le serveur SQL Microsoft Azure sur des ordinateurs virtuels Microsoft Azure. Le service d′exportation de données effectue d′abord une synchronisation intelligente de l′ensemble du schéma et des données Dataverse, puis effectue une synchronisation continue au fur et à mesure que des modifications sont apportées (modifications delta) au système dans Dataverse.
Le service d′exportation de données fournit une interface pour la gestion de la configuration et l′administration continue de ce service dans Dataverse. Pour plus d′informations, voir Répliquer les données dans Azure SQL Database. Cette rubrique décrit l′interface par programme et les problèmes correspondants pour ce service.
Conditions préalables pour l′utilisation du service d′exportation de données
Du fait que ce service nécessite l′accès à une base de données SQL Microsoft Azure externe dans Dataverse, un certain nombre de conditions préalables doivent être satisfaisante avant de pouvoir correctement accéder à ce service. Les conditions préalables suivantes sont expliquées plus en détail du point de vue d′un administrateur dans la section Conditions préalables pour l′utilisation du service de l′exportation de données.
Votre environnement Dataverse doit être configuré de sorte que :
Les tables qui seront exportées sont activées avec le suivi des modifications. Pour plus d′informations, voir Utiliser le suivi des modifications pour synchroniser les données avec les systèmes externes.
Le code s′exécute dans le contexte d′un utilisateur avec le rôle de sécurité Administrateur système.
Notes
L’accès par programme à ce service ne requiert pas l’installation de la solution gérée d’exportation des données associée.
La base de données Azure SQL cible doit être configurée de sorte que :
L′abonnement doit prendre en charge le volume de données en cours de réplication de votre instance Dataverse.
Les paramètres du pare-feu doivent permettre l′accès depuis l′adresse IP de votre service d′exportation de données. Pour plus d′informations, voir Configurer une règle de pare-feu au niveau du serveur Azure SQL Database à l′aide du portail Azure.
Il est préférable que l′option « Autoriser l′accès aux services Azure » soit activée.
L′utilisateur de la base de données, spécifié dans la chaîne de connexion de l′exportation de données, doit avoir les autorisations de création et de modification appropriées sur la base de données cible. Au minimum, elles incluent :
CRTB
,CRTY
,CRVW
,CRPR
,ALUS
et ′VWDS′. Pour plus d′informations, voir Autorisations (moteur de base de données).Au moins un utilisateur a des autorisations étendues sur le schéma. Le script suivant crée un nouvel utilisateur de ce type.
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
Pour obtenir des solutions et services en ligne, Azure fournit un service Key Vault pour protéger les clés de chiffrement, les mots de passe, et d′autres secrets. Pour utiliser Azure Key Vault, ce service appartenant au client doit être configuré de sorte que l′autorisation soit accordée au « service d′exportation des données Dynamics 365 », qui est utilisé pour stocker en toute sécurité la chaîne de connexion SQL Azure. Pour effectuer cette configuration comportant un script de PowerShell, voir Procédure de configuration de Azure Key Vault. Par ailleurs, ce service peut être géré via son API REST ; voir Gestion de Key Vault.
Nous vous recommandons également que d′ajouter le domaine https://discovery.crmreplication.azure.net/ à la liste des sites approuvés de votre navigateur pour les fenêtres contextuelles de ce site.
Programmation du service d′exportation de données
Le service d’exportation des données expose une API basée sur REST qui est divisée en deux groupes : un ensemble d’opérations de Metadata
pour explorer la structure organisationnelle, les relations, et les informations de connexion de Dataverse ; et un ensemble d’opérations de Profiles
pour configurer et gérer chaque réplication de données. Cette API est entièrement définie et documentée aux URL Swagger suivantes :
Point de terminaison Swagger | Description |
---|---|
https://discovery.crmreplication.azure.net/swagger/docs/2016-01-01 | Définition du JSON de l′API du service d′exportation de données à utiliser avec des outils de développeurs et des processus dynamiques |
https://discovery.crmreplication.azure.net/swagger/ui/index# | Version conviviale de cette API à des fins de référence pour les développeurs |
Référence rapide à l′API
Pour la simplicité du lecteur, ces interfaces ont été récapitulées dans les tableaux suivants.
Opérations de métadonnées (https://discovery.crmreplication.azure.net/crm/exporter/metadata/
)
Ressource | méthodes | Description |
---|---|---|
Organisations | GET | Obtenir des détails organisationnels sur toutes les organisations auxquelles l′utilisateur actuel appartient |
détecter | GET | Obtenez plus de détails organisationnels pour l’organisation spécifiée. |
Connecteur | GET | Obtenez plus de détails sur le connecteur pour l’organisation spécifiée. |
entités | GET | Obtenez toutes les tables publiques exportables pour l’organisation spécifiée. |
relations | GET | Obtenez toutes les relations exportables pour l’organisation spécifiée. |
hasorgacceptedprivacyterms | GET | Vérifiez si l’organisation associée a accepté les conditions de confidentialité. |
acceptprivacyterms | POST | Acceptez l’organisation spécifiée pour l’accès aux données. |
Opérations des profils ([ConnectorURL]/crm/exporter/
)
Ressource | Méthodes | Description |
---|---|---|
profils | GET, POST | Obtenez tous les profils de l’organisation spécifiée, créer un profil d’exportation. |
profiles/{id} | GET, PUT, DELETE | Obtenez, mettez à jour ou supprimez un profil spécifique. |
profiles/{id}/activate | POST | Activez un profil, qui démarre la réplication des définitions de table et des données associées. |
profiles/{id}/activatemetadata | POST | Activez le profil pour la réplication des définitions de table uniquement. |
profiles/{id}/activatedata | POST | Activez le profil pour la réplication des données uniquement. |
profiles/{id}/deactivate | POST | Désactivez un profil. |
profiles/{id}/test | GET | Exécutez des opérations de test sur un profil existant. |
profiles/validate | POST | Exécutez des opérations de test sur une description de profil avant de la créer. |
profiles/{id}/failures | GET | Obtenez la chaîne de connexion à un objet blob contenant les détails d’un échec pour un profil donné. |
Obtenir l′accès
Puisque seuls les administrateurs système Dataverse sont autorisés à effectuer des opérations d′exportation de données, ces API appliquent l′autorisation de l′appelant à l′aide de jetons de sécurité de Microsoft Entra ID. L′extrait de code suivant illustre la génération d′un tel jeton pour une application web. Vous devez remplacer les valeurs resource
et AppId
par ces valeurs appropriées à votre service. Cette méthode peut être utilisée pour le développement et le test, mais des moyens plus sécurisés doivent être utilisés pour la production, telles que Azure Key Vault.
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;
Pour obtenir des instructions sur la manière dont vous pouvez obtenir un AppId
, voir Autoriser l′accès aux applications Web à l′aide de OAuth 2.0 et Microsoft Entra ID. Pour plus d′informations sur la sécurité de l′utilisateur Azure, voir Scénarios d′authentification pour Microsoft Entra ID.
Gestion des erreurs et traitement des échecs
Une fois qu′un profil est correctement configuré, le processus de synchronisation est généralement très fiable. Toutefois, si la synchronisation d′un enregistrement échoue, le traitement des échecs ci-après est appliqué :
Une fois que l′intervalle avant une nouvelle tentative est configuré, une autre tentative est effectuée pour synchroniser l′enregistrement. Cette opération est répétée jusqu′au nombre maximal configuré de nouvelles tentatives.
L′enregistrement est marqué comme traité.
Une entrée d′enregistrement correspondante est écrite dans le journal des erreurs.
L′enregistrement suivant est traité.
Étant donné que l′enregistrement est marqué comme traité, aucune tentative ultérieure n′est effectuée pour synchroniser l′enregistrement jusqu′à ce que sa valeur ou son schéma change. (Notez que l′écriture de valeurs identiques dans une table la marque également comme modifiée.)
Les entrées du journal des erreurs sont en écriture seule. Les succès ou échecs futurs pendant la synchronisation du même enregistrement n′entraînent pas l′altération des entrées antérieures pour cet enregistrement. Par exemple, une entrée en échec est conservée dans le journal des erreurs même après que l′enregistrement ait été synchronisé avec succès pendant un cycle de synchronisation ultérieur.
Attention
Cette logique de traitement des erreurs peut faire l′objet de modifications dans les prochaines versions de ce service.
Ces entrées en échec peuvent être récupérées via la requête Obtenir les détails de l′échec pour un profil donné. La réponse retourne un URI vers un objet blob Azure contenant les informations d′échec. Chaque ligne contient les champs séparés par des virgules ci-après (de nouvelles lignes ont été ajoutées pour plus de clarté) :
Entity: <entity-name>,
RecordId: <”N/A” | guid>,
NotificationTime: <datetime>,
ChangeType: <sync-type>,
FailureReason: <description>
Par exemple :
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'.
Voir aussi
Gérer vos données dans Dynamics 365
Importer des données
Notes
Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)
Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).