Répliquer les données dans la base de données SQL Azure à l’aide du service d’exportation de données

Note

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 : https://aka.ms/DESDeprecationBlog

Le service d’exportation de données est un service complémentaire disponible sur Microsoft AppSource qui ajoute la possibilité de répliquer des données de la base de données Microsoft Dataverse dans un magasin Azure SQL Database dans le cadre d’un abonnement Azure appartenant au client. Les destinations cibles prises en charge sont Azure SQL Database et SQL Server sur des machines virtuelles Azure. Le service d’exportation de données effectue d’abord une synchronisation intelligente de l’ensemble des données, puis effectue une synchronisation continue au fur et à mesure que des modifications sont apportées (modifications delta) au système. Cela permet d’activer plusieurs scénarios d’analyse et de création de rapport sur les données avec les services de données et d’analyse Azure. De nouvelles possibilités sont également offertes aux clients et partenaires pour créer des solutions personnalisées.

Note

Il est fortement recommandé d’exporter vos données Dataverse vers Azure Synapse Analytics et/ou Azure Data Lake Gen2 avec Azure Synapse Link for Dataverse. Pour plus d’informations, voir Accélérer le temps d’obtention d’informations avec Azure Synapse Link for Dataverse

Vous pouvez utiliser le service d’exportation de données avec les applications d’engagement client (Dynamics 365 Sales, Dynamics 365 Customer Service, Dynamics 365 Field Service, Dynamics 365 Marketing et Dynamics 365 Project Service Automation).

Pour plus d’informations sur l’interface par programme pour la gestion de la configuration et de l’administration du service d’exportation de données, voir Service d’exportation de données dans le guide du développeur.

Conditions préalables pour l′utilisation du service d′exportation de données

Pour commencer à utiliser le service d’exportation de données, les conditions préalables suivantes sont requises.

Service de base de données SQL Azure

  • Un abonnement Azure SQL Database appartenant au client. Cet abonnement doit autoriser le volume de données qui est synchronisé.

  • Paramètres du pare-feu. Nous vous recommandons de désactiver l’option Autoriser l’accès aux services Azure et de spécifier les adresses IP clientes appropriées répertoriées dans cette rubrique. Plus d’informations : Adresses IP statiques des bases de données SQL Azure utilisées par le service d’exportation de données

    Vous pouvez également activer l’option Autoriser l’accès aux services Azure pour autoriser l’accès à tous les services Azure.

    Pour SQL Server sur la machine virtuelle Azure, l’option « Se connecter à SQL Server via Internet » doit être activée. Informations complémentaires : Azure : Se connecter à une machine virtuelle SQL Server sur Azure

    De plus, configurez vos règles de pare-feu pour permettre la communication entre le service d’exportation de données et SQL Server.

  • L’utilisateur de base de données doit disposer d’autorisations au niveau de la base de données et au niveau du schéma en fonction des tables ci-dessous. L’utilisateur de base de données est utilisé dans la chaîne de connexion de l’exportation de données.

    Autorisations de base de données requises.

    Code du type d’autorisation Nom de l’autorisation
    CRTB CREATE TABLE
    CRTY CREATE TYPE
    CRVW CREATE VIEW
    CRPR CREATE PROCEDURE
    ALUS ALTER ANY USER
    VWDS AFFICHER LE STATUT DE LA BASE DE DONNÉES

    Autorisations de schéma requises.

    Code du type d’autorisation Nom de l’autorisation
    AL ALTER
    DANS INSERT
    DL SUPPR
    SL SELECT
    UP UPDATE
    EX EXECUTE
    RF REFERENCES

Service Azure Key Vault

  • Le client possédait un abonnement Key Vault, qui permet de maintenir sécurisée la chaîne de connexion de base de données.

  • Accordez l’autorisation PermissionsToSecrets à l’application avec l’ID « b861dbcc-a7ef-4219-a005-0e4de4ea7dcf ». Cela peut être effectué en exécutant la commande AzurePowerShell ci-dessous et est utilisé pour accéder au Key Vault contenant contient le secret de la chaîne de connexion. Plus d’informations : Procédure de configuration de Azure Key Vault

  • Les secrets à l’intérieur du Key Vault doivent être étiquetés avec les identifiants de l’organisation (OrgId) et du client (TenantId). Cela peut être effectué en exécutant la commande AzurePowerShell ci-dessous. Plus d’informations : Procédure de configuration de Azure Key Vault

  • Configurez vos règles de pare-feu pour permettre la communication entre le service d’exportation de données et Azure Key Vault.

Applications Customer Engagement

  • Un environnement de version 9.0 ou version ultérieure.

  • La solution Service d’exportation de données doit être installée.

    • Accédez à Paramètres>Microsoft Appsource> recherchez ou accédez à Microsoft Dynamics 365 - Service d’exportation de données, puis sélectionnez Obtenir maintenant.
    • Sinon, trouvez-la sur Microsoft AppSource.
  • Les entités qui seront ajoutées au Profil d’exportation doivent être activées avec le suivi des modifications. Pour qu’une entité standard ou personnalisée puisse être synchronisée, accédez à Personnalisation>Personnaliser le système, puis sélectionnez l’entité. Dans l’onglet Général vérifiez que l’option Suivi des modifications sous la section Services de données est activée.

  • Vous devez avoir le rôle de sécurité Administrateur système dans l’environnement.

Navigateur Web

Activez les fenêtres contextuelles pour le domaine https://discovery.crmreplication.azure.net/ dans votre navigateur Web. Ceci est obligatoire pour la connexion automatique lorsque vous accédez à Paramètres > Exportation des données.

Services, informations d’identification et privilèges requis

Pour utiliser la fonctionnalité Service d’exportation de données, vous devez disposer des services, des informations d’identification et des privilèges ci-après.

  • Un abonnement. Seuls les utilisateurs qui bénéficient du rôle de sécurité Administrateur système peuvent configurer ou apporter des modifications à un Profil d’exportation.

  • Un abonnement Azure incluant les services ci-après.

    • Azure SQL Database ou AzureSQL Server sur des machines virtuelles Azure.

    • Azure Key Vault.

Important

Pour utiliser le service d’exportation de données, les applications d’engagement client et les services Azure Key Vault doivent s’exécuter sur le même client et dans le même Microsoft Entra ID. Plus d’informations : Intégration d’Azure avec Microsoft 365

Le service Azure SQL Database peut être dans le même client ou un client différent du service du service.

Informations à connaître avant d’utiliser le service d’exportation de données

  • Les profils d’exportation doivent être supprimés, puis recréés chaque fois que vous exécutez les actions suivantes sur un environnement.

    • Restaurez un environnement.
    • Copiez un environnement (intégralement ou partiellement).
    • Réinitialisez un environnement.
    • Déplacer un environnement vers un autre pays ou une autre zone.

    Pour ce faire, supprimez le profil d’exportation dans la vue PROFILS D’EXPORTATION, supprimez les tables et les procédures stockées, puis créez un profil. Plus d’informations : Comment supprimer toutes les tables et procédures stockées du profil d’exportation des données

  • Le service d’exportation de données ne fonctionne pas pour les environnements de bac à sable ou de production qui sont configurés avec l’option Activer le mode d’administration activée. Pour plus d’informations : mode Administration

  • Le service d’exportation de données ne permet pas de supprimer les tables, colonnes ou objets de procédure stockée associés dans la base de données SQL Azure de destination lorsque les actions suivantes se produisent.

Exporter le profil

Pour exporter des données des applications d’engagement client, l’administrateur crée un profil d’exportation. Plusieurs profils peuvent être créés et activés pour synchroniser les données vers différentes bases de données de destination simultanément.

Le profil d’exportation est le concept de base du service d’exportation de données. Le profil d’exportation rassemble les informations d’installation et de configuration pour synchroniser les données avec la base de données de destination. Dans le cadre du profil d’exportation, l’administrateur fournit une liste d’entités à exporter dans la base de données de destination. Une fois l’activé, le profil d’exportation démarre la synchronisation automatique des données. Initialement, toutes les données qui correspondent à chaque entité sélectionnée sont exportées. Ensuite, seules les modifications des données quand elles se produisent dans les enregistrements ou métadonnées d’entité des applications d’engagement client sont synchronisées en continu à l’aide d’un mécanisme de transmission (push) en temps quasi-réel. Par conséquent, il est inutile de configurer une planification pour récupérer des données des applications d’engagement client.

Seules les entités pour lesquelles le suivi des modifications est activé peuvent être ajoutées au profil d’exportation. Notez que le suivi des modifications est activé sur la plupart des entités standard qui capturent des données. Les entités personnalisées doivent être explicitement activées pour le suivi des modifications avant de les ajouter à un profil d’exportation. Pour plus d’informations : Activer le suivi des modifications pour contrôler la synchronisation des données

Le service d’exportation de données effectue à la fois une synchronisation des métadonnées et des données. Chaque entité se traduit en une table, et chaque champ se traduit en une colonne dans la table de base de données de destination. Les noms des tables et des colonnes utilisent le nom de schéma des métadonnées.

Une fois activé, un profil d’exportation rassemble les statistiques de la synchronisation des données qui offre de la visibilité opérationnelle et des diagnostics des données exportées.

Synchronisation des données disponible avec un profil d’exportation

Catégorie Fonctionnalité Types de données pris en charge
Synchronisation initiale Métadonnées - Types de données de base Nombre entier, Nombre à virgule flottante, Nombre décimal, Ligne de texte unique, Plusieurs lignes de texte, Types de données de date et d’heure.
Synchronisation initiale Métadonnées - Types de données avancées Devise, PartyList, Groupe d’options, Statut, Raison du statut, Recherche (y compris type de recherche Client et Concernant). PartyList n’est disponible que pour la version 8.1 d’exportation et ultérieure.
Synchronisation initiale Données - Types de base Tous les types de données de base.
Synchronisation initiale Données - Types avancés Tous les types de données avancés.
Synchronisation delta Modifier le schéma - Types de base Ajouter ou modifier une modification de champ, tous les types de données de base.
Synchronisation delta Modifier le schéma - Types avancés Ajouter ou modifier une modification de champ, tous les types de données avancées.
Synchronisation delta Modifier les données - Types de base Tous les types de données de base.
Synchronisation delta Modifier les données - Types avancés Tous les types de données avancés, tels que PartyList.

Créer un profil d’exportation

Vérifiez que les conditions suivantes sont remplies avant de créer un profil d’exportation.

  • La solution Service d’exportation de données est installée dans votre environnement.

  • Maintenez la chaîne de connexion SQL Database dans Key Vault et copiez l’URL de Key Vault à fournir dans le profil d’exportation. Informations complémentaires : Azure : Mise en route avec Azure Key Vault

  • Les entités à ajouter au profil d’exportation sont activées pour le suivi des modifications. Pour plus d’informations : Activer le suivi des modifications pour contrôler la synchronisation des données

  • Votre service SQL Database a suffisamment d’espace de stockage pour stocker les données.

  • Vous êtes un administrateur système dans l’environnement.

  1. Accédez à Paramètres>Exportation des données.

  2. Examinez l’avis, et sélectionnez Continuer ou Annuler si vous ne souhaitez pas exporter des données.

  3. Sélectionnez Nouveau pour créer un profil d’exportation.

  4. Dans l’étape Propriétés, entrez les informations suivantes, puis sélectionnez Suivant pour continuer sans se connecter à Key Vault. Le fait de sélectionner Valider utilise l’URL de Key Vault que vous avez fourni pour vous connecter à Key Vault.

    • Nom. Nom unique du profil. Ce champ est obligatoire.

    • URL de connexion de Key Vault. URL de Key Vault pointant vers la chaîne de connexion stockée avec les informations d’identification utilisées pour vous connecter à la base de données de destination. Ce champ est obligatoire. Plus d’informations : Procédure de configuration de Azure Key Vault

      Important

      L’URL de connexion de Key Vault respecte la casse. Tapez l’URL de connexion de Key Vault telle qu’elle est affichée après avoir exécuté les commandes Windows PowerShell de cette rubrique.

    • Schéma. Nom d’un schéma de base de données alternatif. Seuls les caractères alphanumériques sont valides. Ce champ est facultatif. Par défaut, dbo est le schéma qui est utilisé pour la base de données SQL de destination.

    • Préfixe. Préfixe à utiliser pour les noms de tables créés dans la base de données de destination. Cela permet facilement d’identifier les tables créées pour le profil d’exportation dans la base de données de destination. Une fois spécifié, vérifiez que le préfixe est d’une longueur inférieure à 15 caractères. Ce champ est facultatif et seuls les caractères alphanumériques sont autorisés.

    • Nombre de nouvelles tentatives. Nombre de nouvelles tentatives d’un enregistrement en cas d’échec à l’insérer ou à le mettre à jour dans la table de destination. Ce champ est obligatoire. Les valeurs acceptables sont 0 à 20 et la valeur par défaut est 12.

    • Intervalle entre les nouvelles tentatives. Nombre de secondes à attendre avant une nouvelle tentative en cas d’échec. Ce champ est obligatoire. Les valeurs acceptables sont 0 à 3600 et la valeur par défaut est 5.

    • Écrire le journal de suppression. Paramètre facultatif pour la journalisation des enregistrements supprimés.

    Onglet Propriétés dans la boîte de dialogue Créer un profil d’exportation.

  5. Dans l’étape Sélectionner les entités, sélectionnez les entités à exporter vers la base de données SQL de destination, puis sélectionnez Suivant.

    Sélectionnez l’onglet Entités dans la boîte de dialogue Créer un profil d’exportation.

  6. Dans l’étape Sélectionner les relations, vous pouvez synchroniser les relations M:N (plusieurs-à-plusieurs) qui existent avec les entités que vous avez sélectionnées à l’étape précédente. Cliquez sur Suivant.

    Créer un profil d’exportation - Gérer les relations - Sélectionner des relations.

  7. Dans l’étape Résumé, sélectionnez Créer et activer pour créer l’enregistrement du profil et vous connecter à Key Vault, qui démarre le processus de synchronisation. Sinon, sélectionnez Créer pour enregistrer le profil d’exportation et l’activer ultérieurement.

    Onglet Résumé dans la boîte de dialogue Créer un profil d’exportation.

Modifier un profil d’exportation existant

Vous pouvez ajouter ou supprimer les entités et les relations d’un profil d’exportation existant que vous souhaitez répliquer.

  1. Accédez à Paramètres>Exportation des données.

  2. Dans la vue Tous les profils d’exportation des données, sélectionnez le profil d’exportation que vous souhaitez modifier.

    Sélectionnez un profil d’exportation.

  3. Dans la barre d’outils Actions, sélectionnez GÉRER LES ENTITÉS pour ajouter ou supprimer des entités pour l’exportation des données. Pour ajouter ou supprimer des relations d’entité, sélectionnez GÉRER LES RELATIONS.

    Gérez des entités ou des relations d’entités.

  4. Sélectionnez les entités ou les relations d’entité que vous souhaitez ajouter ou supprimer.

    Sélectionnez les entités ou les relations d’entité à ajouter ou à supprimer.

  5. Sélectionnez Mettre à jour pour envoyer vos modifications au profil d’exportation.

Important

Lorsque vous supprimez une entité ou une relation d’entité d’un profil d’exportation, la table correspondante n’est pas supprimée dans la base de données de destination. Avant de pouvoir rajouter une entité qui a été supprimée, vous devez supprimer la table correspondante dans la base de données de destination. Pour supprimer une table d’entités, voir Comment supprimer des tables et des procédures stockées du Profil d’exportation des données pour une entité spécifique.

Détails de la table pour la base de données SQL Azure de destination

Le service d’exportation de données crée des tables à la fois pour les données et les métadonnées. Une table est créée pour chaque entité et relation M:N synchronisée.

Une fois qu’un profil d’exportation est activé, les tables ci-après sont créées dans la base de données de destination. Ce sont des tables système pour lesquelles les champs SinkCreatedTime et SinkModifiedTime ne seront pas ajoutés.

Nom de table Création
<Prefix>_GlobalOptionsetMetadata À l’activation du profil d’exportation
<Prefix>_OptionsetMetadata À l’activation du profil d’exportation
<Prefix>_StateMetadata À l’activation du profil d’exportation
<Prefix>_StatusMetadata À l’activation du profil d’exportation
<Prefix>_TargetMetadata À l’activation du profil d’exportation
<Prefix>_AttributeMetadata À l’activation du profil d’exportation
<Prefix>_DeleteLog À l’activation du profil d’exportation lorsque l’option Journal de suppression est activée.

Résolution des problèmes de synchronisation

Même après plusieurs nouvelles tentatives, des échecs de synchronisation des enregistrements peuvent se produire dans les contraintes de stockage des bases de données ou le verrouillage des tables en raison de requêtes longues. Pour résoudre ces échecs, vous pouvez forcer une resynchronisation des enregistrements ayant échoué ou une resynchronisation de tous les enregistrements.

  1. Affichez vos profils d’exportation pour rechercher ceux présentant des échecs de synchronisation des enregistrements. Pour ce faire, affichez les profils de données dans la zone Synchronisation ou ouvrez un profil d’exportation, par exemple le profil ci-après présentant un échec de synchronisation des enregistrements de l’entité Contact.

    DataExport_failed_records_exist.

  2. Examinez la source de l’échec de synchronisation et résolvez-la. Plus d’informations : Gestion des erreurs et surveillance

  3. Une fois que le problème a été résolu, resynchronisez les enregistrements ayant échoué.

    Note

    La synchronisation des enregistrements ayant échoué est une fonctionnalité préliminaire publique.

    • Les fonctionnalités en version préliminaire ne sont pas destinées à une utilisation en production et peuvent être restreintes. Ces fonctionnalités sont disponibles avant une publication officielle afin que les clients puissent y accéder de façon anticipée et fournir des commentaires.
      • Des modifications doivent être apportées à cette fonctionnalité, vous ne devez donc pas l’utiliser en production. Utilisez-la uniquement dans des environnements de test ou de développement.
      • Microsoft ne fournit pas de prise en charge pour cette fonctionnalité préliminaire. Le support technique Microsoft Dynamics 365 ne pourra pas vous aider si vous avez des problèmes ou des questions. Les fonctionnalités d’évaluation ne sont pas destinées à une utilisation en production et sont soumises à des conditions d’utilisation supplémentaires.
    1. Connectez-vous à votre environnement et accédez à Paramètres>Exportation de données.

    2. Ouvrez le profil d’exportation contenant des échecs de synchronisation des enregistrements.

    3. Dans la barre d’outils du profil d’exportation, sélectionnez RESYNCHRONISATION DES ENREGISTREMENTS AYANT ÉCHOUÉ.

    4. Sélectionnez OK dans la boîte de dialogue de confirmation une fois que les enregistrements ayant échoué ont été correctement resynchronisés.

    Notification d’une resynchronisation réussie.

    1. Vérifiez que le profil d’exportation ne contient pas de notifications d’enregistrement ayant échoué en ouvrant le profil d’exportation de données et en affichant le compteur Notifications ayant échoué dans l’onglet PROPRIÉTÉS ET VUE D’ENSEMBLE, qui doit être défini sur 0. Sélectionnez ACTUALISER dans la barre d’outils du profil d’exportation pour vérifier que la valeur Notifications ayant échoué est actuelle.

    Indication Aucun enregistrement n’a échoué.

  4. Si les échecs de synchronisation des enregistrements persistent après avoir essayé de resynchroniser en suivant les étapes précédentes, contactez les Services de support technique Microsoft.

Gestion des erreurs et surveillance

Pour afficher le statut de synchronisation d’un profil d’exportation, accédez à Paramètres>Exportation de données et ouvrez le profil d’exportation. Dans l’onglet ENTITÉS, le statut de synchronisation s’affiche avec une colonne Enregistrements ayant échoué pour les enregistrements qui n’ont pas pu être synchronisés. Pour tout enregistrement ayant échoué, une liste de ces enregistrements y compris la raison du statut peut être téléchargée en sélectionnant ENREGISTREMENTS AYANT ÉCHOUÉ dans la barre de commandes.

Barre de commandes Profil d’exportation- Bouton Enregistrements ayant échoué.

Dans le profil d’exportation, vous pouvez sélectionner PROPRIÉTÉS ET VUE D’ENSEMBLE pour afficher les propriétés du profil. Sélectionnez RELATIONS pour afficher le statut de synchronisation de la relation.

Comment afficher des informations détaillées sur les enregistrements qui n’ont pas été synchronisés

L’affichage des journaux d’enregistrement ayant échoué peut vous aider à déterminer la cause des échecs de synchronisation. Pour afficher les enregistrements ayant échoué dans la base de données de destination Azure, utilisez l’Explorateur de stockage Azure, une application autonome gratuite qui vous permet d’utiliser facilement les données de stockage Azure. Pour plus d’informations : Explorateur Stockage Azure.

  1. Accédez à Paramètres>Exportation des données.

  2. Dans la vue Tous les profils d’exportation des données, sélectionnez le profil d’exportation contenant des notifications en échec.

    Notifications ayant échoué.

  3. Dans la barre d’outils Actions, sélectionnez ENREGISTREMENTS AYANT ÉCHOUÉ.

    Bouton de barre d’outils Enregistrements ayant échoué.

  4. Dans la boîte de dialogue Télécharger les enregistrements ayant échoué, sélectionnez Copier l’URL d’objet blob, puis sélectionnez OK.

    Téléchargez la boîte de dialogue des enregistrements ayant échoué.

    Note

    L’URL de l’objet blob est valable pendant 24 heures. Si l’URL dépasse les 24 heures, répétez les étapes décrites précédemment pour générer une nouvelle URL d’objet blob.

  5. Démarrez l’Explorateur de stockage Azure.

  6. Dans l’Explorateur de stockage Azure, sélectionnez Se connecter au stockage Azure.

  7. Collez l’URL de votre Presse-papiers vers la zone Se connecter au stockage Azure, puis sélectionnez Suivant.

    URL de stockage.

  8. Dans la page Résumé des connexions, sélectionnez Se connecter.

  9. L’Explorateur de stockage Azure se connecte à la base de données de destination. Si des enregistrements ayant échoué existent pour le profil d’exportation, l’Explorateur de stockage Azure affiche les dossiers de synchronisation des enregistrements ayant échoué.

Comment afficher des informations détaillées sur les enregistrements qui n’ont pas été synchronisés (Version préliminaire)

Vous pouvez télécharger les enregistrements qui ont connu un échec directement depuis l’interface utilisateur du service d’exportation des données. Cette fonctionnalité est actuellement en mode Aperçu et nous comptons sur vous pour la tester et nous faire part de vos commentaires.

Étapes pour télécharger les enregistrements ayant connu un échec

  1. Identifier le profil aux enregistrements ayant connu un échec

    Profils d’exportation des données.

  2. Sélectionnez le profil, puis Télécharger les enregistrements ayant connu un échec (Aperçu) dans la barre de menu supérieure.

    Téléchargez les enregistrements ayant échoué (aperçu).

  3. Dans la boîte de dialogue Télécharger les enregistrements ayant connu un échec, une liste triée des derniers 20 (max) fichiers blob s’affiche. Sélectionnez celui que vous souhaitez télécharger, puis cliquez sur Ok.

    Téléchargez les enregistrements ayant échoué.

  4. Une fois téléchargé, ouvrez le fichier dans un éditeur de texte de votre choix (Notepad par exemple) et affichez les détails relatifs aux échecs.

    Exemple de journal des erreurs.

Structure des dossiers de synchronisation des enregistrements ayant échoué et fichiers journaux

L’URL de stockage d’objets blob Azure pour les enregistrements ayant échoué pointe vers un emplacement dont la structure de dossiers se présente comme suit :

  • data. Ce dossier contient les notifications de données ayant échoué et le JSON associé pour les données d’enregistrement.

  • metadata. Ce dossier contient les notifications de métadonnées ayant échoué et le JSON associé pour les métadonnées.

  • failurelog. Ce dossier contient des journaux qui fournissent des informations sur l’échec de la synchronisation et la raison de cet échec.

  • forcerefreshfailurelog. Ce dossier contient les erreurs issues de la dernière exécution de la commande Enregistrements ayant échoué du service d’exportation de données, qui est utilisée pour resynchroniser les enregistrements ayant échoué.

  • unprocessablemessages. Ce dossier contient les notifications de données qui n’ont pas été traitées en raison de la suppression des données ou métadonnées et le JSON associé.

    Les dossiers failurelog et forcerefreshfailurelog sont structurés comme suit : Année\Mois\Jour\Heure pour vous permettre de localiser rapidement les échecs les plus récents. Tous les enregistrements d’échec antérieurs à 30 jours sont supprimés.

    Voici un exemple de fichier journal qui indique un échec de synchronisation des enregistrements de l’entité contact.

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.  

Raisons courantes aux échecs de synchronisation des enregistrements

Voici quelques raisons pour lesquelles des échecs de synchronisation des enregistrements peuvent se produire.

  • Stockage insuffisant pour la base de données de destination. Avant d’essayer de resynchroniser les enregistrements ayant échoué, augmentez ou libérez le stockage dans Azure SQL Database, si nécessaire. Lorsque ce problème se produit, un message similaire au suivant est enregistré dans le journal d’échec.

    La base de données ’databasename’ a atteint son quota de taille. Partitionnez ou supprimez les données, supprimez les index ou consultez la documentation pour rechercher des solutions possibles.

  • Délais d’expiration de la synchronisation avec Azure SQL Database. Cela peut se produire pendant la synchronisation initiale d’un profil d’exportation de données lorsque de grandes quantités de données sont traitées simultanément. Lorsque ce problème se produit, resynchronisez les enregistrements ayant échoué. Résolution des problèmes de synchronisation

Pratiques recommandées lors de l’utilisation de la base de données SQL Azure avec le service d’exportation de données

  • Pour éviter les erreurs de synchronisation dues à la limitation des ressources, il est recommandé de disposer d’un plan Azure SQL Database Premium P1 ou plus lorsque vous utilisez le service d’exportation de données. Plus d’informations : Limites de ressources d’Azure SQL Database et Tarification d’Azure SQL Database

  • Configurez Azure SQL Database de manière à utiliser l’isolation RCSI (Read Committed Snapshot Isolation) pour les charges de travail exécutées simultanément sur la base de données de destination qui exécutent des requêtes de lecture longues, telles que des tâches de création de rapport et ETL. Cela réduit l’occurrence des erreurs d’expiration pouvant se produire avec le service d’exportation de données en raison de conflits de lecture ou d’écriture.

  • Pour aider à améliorer les performances de requête nous préconisons que le degré maximal de parallélisme (MAXDOP) de la base de données du service d’exportation de données soit défini sur 1. Informations complémentaires : MSDN : Options de mémoire du serveur

  • Évaluez régulièrement la quantité de fragmentation et, le cas échéant, recréez les index dans la base de données du service d’exportation de données. Informations complémentaires : Réorganiser et regénérer les index

  • Mettez à jour régulièrement les statistiques de la base de données sur des tables et des vues indexées dans la base de données du service d’exportation de données. Informations complémentaires : Mettre à jour les statistiques

  • Surveillez l’utilisation de la base de données du service d’exportation de données. Informations complémentaires : Surveillance des performances

À propos de la latence de la synchronisation des données

Le service d’exportation de données est organisé pour synchroniser les modifications de données dans la base de données de destination à l’aide d’un mécanisme de transmission (push) en écoutant les modifications quand elle se produisent dans les applications d’engagement client. Le service tâche de transmettre les données en quelques minutes, mais il existe un certain nombre de facteurs qui peuvent avoir une influence sur la latence d’un bout à l’autre de la synchronisation.

Les facteurs qui influencent la durée de la synchronisation comprennent :

  • La charge de travail actuelle sur les applications d’engagement client.
  • Le taux de modification des données dans les applications d’engagement client.
  • Le nombre d’entités ajoutées à chaque profil d’exportation et leurs attributs.
  • Les performances du serveur SQL. Par exemple :
    • Le délai d’établissement de la connexion SQL.
    • Le délai d’exécution de l’instruction SQL.

Selon notre surveillance du service, nous avons observé que la plupart des synchronisations delta courantes s’achèvent en 15 minutes lorsque le service fonctionne dans les conditions suivantes :

  • La synchronisation qui se produit est une synchronisation delta et non la synchronisation initiale. La synchronisation delta est uniquement pour les opérations de modifications des données, qui inclue la création d’enregistrements, la mise à jour et la suppression des transactions. Notez que la synchronisation delta commence une fois la synchronisation initiale terminée.
  • Le taux de modification de données maximal dans les applications d’engagement client pour toutes les entités du profil d’exportation est inférieur à 3 000 enregistrements par heure. Toute hausse soudaine du taux de modification des données suite à une modification en bloc des enregistrements dépassant le taux maximal de modification entraînera de la latence supplémentaire.
  • Chaque entité ajoutée à un profil d’exportation implique moins de 150 attributs.
  • La connexion à la base de données ou l’exécution d’une instruction SQL s’achève en moins de 10 secondes. Si cette limite est dépassée, cela entraîne de la latence supplémentaire.
  • Aucune erreur de connexion à la base de données de destination ou d’exécution SQL ne se produit pendant la synchronisation.

Lorsque les conditions ci-dessus sont remplies, 15 minutes est une latence de synchronisation standard. Microsoft ne fournit aucun contrat de niveau de service (SLA) pour le service d’exportation de données et ne prend aucune garantie ou ni aucun engagement concernant les délais de latence de synchronisation.

Procédure de configuration de Azure Key Vault

Exécutez le script Windows PowerShell décrit ici en tant qu’administrateur de compte Azure pour accorder l’autorisation à la fonctionnalité Service d’exportation de données afin qu’elle puisse accéder à votre Azure Key Vault. Ce script affiche l’URL de Key Vault requise pour créer le profil d’exportation qui permet d’accéder à la chaîne de connexion.

Avant d’exécuter le script, remplacez les espaces réservés pour les variables suivantes.

  • $subscriptionId. Le groupe de ressources Key Vault à utiliser. S’il n’existe pas déjà de groupe de ressources, un nouveau groupe de ressources portant le nom de votre choix sera créé. Dans cet exemple, ContosoResourceGroup1 est utilisé.

  • $location. Indiquez l’emplacement dans lequel le groupe de ressources est, ou doit être, localisé, tel que Ouest des États-Unis.

  • $connectionString. La chaîne de connexion à Azure SQL Database. Vous pouvez utiliser la chaîne de connexion ADO.NET telle qu’elle est affichée dans votre tableau de bord Azure.

  • $organizationIdList = Liste séparée par des virgules d’organisations autorisées, répertoriées par ID d’organisation (organizationId), pour activer le service d’exportation de données. Pour trouver l’ID d’une organisation, accédez à Paramètres>Personnalisations>Ressources du développeur. L’ID d’organisation est située sous Informations de référence d’environnement.

  • $tenantId. Spécifie l’ID locataire Azure Active Directory auquel appartient l’abonnement Key Vault.

Important

Un abonnement Azure peut avoir plusieurs ID de client Azure Active Directory. Veillez à sélectionner l’ID de client Azure Active Directory correct associé à l’environnement que vous utiliserez pour l’exportation des données.

Note

Assurez-vous que l’ID utilisateur référencé dans $connectionString dispose des autorisations appropriées sur la base de données Azure SQL cible.

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

Comment supprimer toutes les tables et procédures stockées du Profil d’exportation des données

Important

Avant d’exécuter cette instruction SQL, vérifiez que vous avez défini correctement les valeurs @prefix et @schema dans l’instruction. Le profil d’exportation doit être recréé après l’exécution de cette instruction 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;

Comment supprimer des tables et des procédures stockées du Profil d’exportation des données pour une entité spécifique

Important

Avant d’exécuter cette instruction SQL, vérifiez que vous avez défini correctement les valeurs @prefix, @schema et @entityName dans l’instruction. Dans cet exemple, la table, les types et les procédures stockées de l’entité prospects sont supprimés.

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

Comment désinstaller le service d’exportation de données depuis Administrer Power Platform

  1. Accédez aux paramètres avancés.
  2. Sélectionnez Paramètres > Personnalisations, puis sélectionnez Solutions.
  3. Choisissez DataExportService publié par Microsoft Dynamics 365, puis sélectionnez Effacer.

Trouvez l’ID de locataire Microsoft Entra pour votre locataire

  1. Connectez-vous au portail Azure.
  2. Sous Services Azure, sélectionnez Propriétés du locataire.
  3. Sélectionnez la valeur dans le champ ID du locataire

Adresses IP statiques des bases de données SQL Azure utilisées par le service d’exportation de données

Dans Azure SQL Database, sélectionnez Définir le pare-feu du serveur, définissez Autoriser l’accès aux services Azure sur DÉSACTIVÉ, sélectionnez Ajouter une adresse IP cliente, puis ajoutez les adresses IP appropriées à la région de votre environnement. Plus d′informations : Azure : Configurer une règle de pare-feu au niveau du serveur Azure SQL Database à l′aide du portail Azure

Région Nouvelle adresse IP Ancienne adresse IP
USA Ouest 20.245.127.60 13.64.148.9
Est des États-Unis 172.174.41.63 20.228.153.81
Asie Est 20.239.192.9 104.208.84.217
Asie du Sud-Est 20.24.15.60 20.205.153.14
Centre de l’Inde 20.219.158.75 20.198.113.107
Sud de l’Inde 52.140.54.95 104.211.204.18
Europe Ouest 20.126.43.104 40.68.244.253
Europe Nord 20.166.94.137 20.238.83.32
Ouest du Japon Aucun changement 104.214.144.93
Est du Japon 52.253.104.175 20.89.138.246
Brésil Sud 4.228.211.102 20.197.186.17
Sud-Est de l’Australie Aucun changement 20.70.112.80
Australie Est 20.5.88.96 20.213.58.3
Centre du Canada 20.220.227.230 20.151.173.107
Est du Canada 40.86.216.207 52.229.109.91
Ouest du Royaume-Uni 51.142.173.150 20.68.113.18
Sud du Royaume-Uni 20.117.159.198 20.117.89.184

Note

Les clients nord-américains doivent ajouter des adresses IP à une liste approuvée pour l’Est et l’Ouest des États-Unis.

Pour éviter des interruptions dans la synchronisation des données, les clients doivent conserver la nouvelle adresse IP et l’ancienne adresse IP.

Problèmes connus

Les enregistrements supprimés peuvent être réinsérés dans la table d’entités après un échec de synchronisation

Lorsque vous procédez à une récupération suite à des échecs de synchronisation, les enregistrements précédemment supprimés peuvent être réinsérés dans la table d’entités d’origine. Pour contourner ce problème lorsque des échecs de synchronisation se produisent, procédez comme suit.

  1. Créez des profils d’exportation dont l’option Écrire le journal de suppression est activée. Recréez les profils d’exportation existants dont l’option Écrire le journal de suppression n’est pas activée.

  2. Créez et exécutez une requête SQL pour la base de données de destination SQL Azure qui recherche des enregistrements dans la table DeleteLog. Si un ou plusieurs enregistrements sont trouvés, cela indique la présence d’enregistrements supprimés.

  3. Si un ou plusieurs enregistrements existent dans la table DeleteLog, créez et exécutez une requête SQL qui détecte les environnements où l’ID d’un enregistrement trouvé dans la table DeleteLog correspond à l’ID d’un enregistrement dans une table EntityName et le versionNumber dans la table deleteLog est supérieur au versionNumber de l’enregistrement dans la table EntityName. En cas de correspondance d’ID d’enregistrement, supprimez l’enregistrement de la table EntityName. Par exemple, si un ID d’enregistrement dans la colonne AccountId de la table DeleteLog correspond à un ID d’enregistrement dans la colonne AccountId de la table d’entités AccountBase et le versionNumber de la table DeleteLog est supérieur au versionNumber de la table Account, supprimez l’enregistrement de la table d’entités AccountBase.

    Important

    Selon les besoins de votre organisation et la configuration requise, nous vous recommandons d’exécuter les requêtes SQL pour la suppression fréquente d’enregistrements, mais en dehors des heures de travail.

    Exemple de requête pour la suppression d’un enregistrement d’entité.

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)

Entités qui ne prennent pas en charge l’exportation de données

Bien qu’elles prennent en charge le suivi des modifications, les entités répertoriées ici ne sont pas prises en charge pour l’exportation de données à l’aide du service d’exportation de données.

Entity Nom de table Solution de contournement
Activité ActivityPointerBase Sélectionnez les entités d’activité spécifiques pour l’exportation, par exemple Appel téléphonique, Courrier électronique et Tâche.

Impossible de créer une ligne supérieure à la taille maximale autorisée de ligne (8 K)

Si vos journaux d’erreurs affichent « Impossible de créer une ligne de taille (taille) supérieure à la taille de ligne maximale autorisée de 8060 », un problème survient lorsque vous dépassez la taille de ligne maximale autorisée. Le service d’exportation des données ne prend pas en charge les tailles de ligne supérieure à la taille maximale autorisée de 8 K. Pour y pallier, vous devez vous assurer que vous respectez les limites en matière de taille de ligne.

La longueur de la chaîne dans la source est supérieure au schéma de destination pour ColumnName

Si vos journaux d’erreurs affichent « La longueur de chaîne dans la source est supérieure au schéma de destination pour [ColumnName, MaxDataLength] » vous allez rencontrer un problème. Si la longueur de chaîne de vos données source est supérieure à la destination, les écritures vers la destination connaîtront un échec. Pour limiter ce problème, vous devrez réduire la taille des données ou accroître la longueur de colonne au-delà MaxLength manuellement dans la base de données.

Les pièces jointes ne sont pas prises en charge

L’exportation de pièces jointes telles que documentbody dans la table Annotation n’est pas prise en charge.

Déclaration de confidentialité

En utilisant le service d’exportation des données, quand vous activez un profil d’exportation des données dans Dynamics 365, les données des entités ajoutées au profil sont envoyées à Azure. La synchronisation initiale comprend toutes les données associées à des entités ajoutées au profil d’exportation, mais après la synchronisation, elle contient uniquement les nouvelles modifications, qui sont fréquemment envoyées au service d’exportation des données. Les données envoyées au service d’exportation des données sont stockées temporairement dans Azure Service Bus et le stockage Azure, traitées dans Azure Service Fabric et enfin synchronisées (insérées, mises à jour ou supprimées) dans la base de données de destination spécifiée dans votre abonnement Azure. Une fois que les données ont été synchronisées, elles sont supprimées d’Azure Service Bus et du stockage Azure. S’il y a une défaillance lors de la synchronisation des données, les données minimales correspondant au type d’entité, l’ID d’enregistrement, et l’horodatage de synchronisation sont stockés dans le stockage Azure pour permettre de télécharger une liste d’enregistrements qui n’ont pas été mis à jour.

Un administrateur peut désactiver le profil d’exportation des données à tout moment pour arrêter la synchronisation des données. En outre, un administrateur peut supprimer le profil d’exportation pour supprimer tous les journaux d’enregistrement qui ont échoué et peut désinstaller le service d’exportation des données pour arrêter de l’utiliser.

La synchronisation des données s’exécute en continu entre Dynamics 365 et le service d’exportation de données de manière sécurisée. Les données sont chiffrées quand elles sont échangées en continu entre Dynamics 365 et le service d’exportation de données.

Les composants et services Azure faisant partie du service d’exportation des données sont décrits en détail dans les sections ci-dessous.

Centre de gestion de la confidentialité Microsoft Azure

Azure Service Fabric

Cela permet à l’API et aux machines virtuelles de calcul Azure de traiter les notifications de synchronisation d’enregistrement reçues de Dynamics 365, puis de les traiter pour insérer, mettre à jour, ou supprimer des données d’enregistrement dans la base de données de destination. Les micro-services qui doivent être déployés sur des machines virtuelles gérées par le runtime Azure Service Fabric gèrent tous les services de calcul associés à la synchronisation des données.

Azure Service Bus

Cela fournit le bus de message dans lequel Dynamics 365 insère les messages de notification de synchronisation qui sont traités par les nœuds de calcul dans Azure Service Fabric. Chaque message stocke des informations, telles que l’ID de l’organisation et l’enregistrement, pour lesquelles synchroniser les données. Les données d’Azure Service Bus sont chiffrées au repos et sont uniquement accessibles par le service d’exportation de données.

Stockage Blob Azure

Les données sont stockées temporairement dans le Stockage Blob Azure au cas où les données de la notification de synchronisation d’enregistrement soient trop importantes pour être stockées dans un message ou si des échecs passagers se produisent lors du traitement de la notification de synchronisation. Ces blobs sont chiffrés en exploitant la toute dernière fonctionnalité du SDK de stockage Azure, qui fournit une prise en charge du chiffrement symétrique et asymétrique et l’intégration avec Azure Key Vault.

Azure SQL

Azure SQL Database stocke la configuration du profil d’exportation des données et les mesures de synchronisation des données.

Voir aussi

Présentation des relations des entités
Service d’exportation de données
Blog de l’équipe : Présentation du Service d’exportation de données