Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La fonctionnalité de suppression en bloc dans Microsoft Dataverse vous permet de maintenir la qualité des données et de gérer la consommation du stockage système en supprimant les données dont vous n’avez plus besoin. Par exemple, vous pouvez supprimer en bloc les données suivantes :
- Données périmées
- Données qui ne sont plus pertinentes pour l’entreprise
- Données de test ou d'exemple superflues
- Données qui ont été importées de manière incorrecte à partir d’autres systèmes
Vous pouvez effectuer les opérations suivantes :
- Supprimer des données de plusieurs tables
- Supprimez les enregistrements d’une table spécifique.
- Recevoir des notifications par e-mail lorsqu’une suppression en bloc est terminée
- Supprimer des données périodiquement
- Planifier l’heure de début d’une suppression en bloc récurrente
- Récupérez des informations sur les défaillances qui se sont produites lors d’une suppression en bloc.
Pour supprimer plusieurs lignes dans des tables élastiques, vous pouvez également utiliser le DeleteMultiple message.
DeleteMultiple supprime immédiatement les enregistrements dans un élastique unique, plutôt que d’utiliser une tâche de suppression en bloc.
Exécuter la suppression en bloc
Pour supprimer des données en bloc, utilisez le BulkDelete message pour envoyer un travail de suppression en bloc. À l’aide du Kit de développement logiciel (SDK), utilisez la classe BulkDeleteRequest. À l’aide de l’API web, utilisez l’action BulkDelete. Spécifiez les expressions de requête qui décrivent les enregistrements à supprimer dans la QuerySet propriété de votre requête.
Un travail de suppression en bloc est représenté par un enregistrement dans la Bulk Delete Operation table (BulkDeleteOperation). Un enregistrement d’opération de suppression en bloc inclut les informations suivantes :
- Nombre d’enregistrements supprimés par la tâche
- Nombre d’enregistrements que le travail n’a pas pu supprimer
- Indique si le travail est programmé pour se répéter
- Heure de début du travail
Le travail de suppression en bloc s’exécute de manière asynchrone sans bloquer d’autres activités. Il supprime uniquement les enregistrements créés avant le début de l’exécution du travail. Le travail supprime les enregistrements spécifiés en fonction des règles en cascade basées sur le comportement en cascade des relations de table.
Si un travail de suppression en bloc échoue ou se termine prématurément, l’opération ne restaure aucun enregistrement supprimé. Les données d’enregistrement restent supprimées. Un enregistrement des défaillances est stocké dans la Bulk Delete Failure table (BulkDeleteFailure). Vous pouvez récupérer des informations à partir de la table sur l’erreur qui a provoqué l’échec.
Pour exécuter un travail de suppression en bloc, vous devez disposer des privilèges BulkDelete et Delete sur les types de tables que vous supprimez. Vous devez également disposer d’autorisations de lecture sur les enregistrements de table que vous spécifiez dans la QuerySet propriété. Un administrateur système dispose des autorisations nécessaires par défaut. Accordez-les à d’autres utilisateurs.
Vous pouvez effectuer une suppression en bloc sur toutes les tables qui prennent en charge le Delete message.
Si l’action de suppression sur un type de table spécifique déclenche un plug-in ou un workflow (processus), le travail de suppression en bloc déclenche le plug-in ou le workflow chaque fois qu’il supprime un enregistrement de table de ce type.
Contrôler le traitement de suppression en bloc
Le Options paramètre sur BulkDelete ou la demande de message vous permet de contrôler la façon dont le travail de suppression en bloc traite les lignes de table (enregistrements). Vous pouvez utiliser le paramètre pour :
- Désactivez la corbeille pour les enregistrements supprimés en bloc. La désactivation de la corbeille améliore les performances en ignorant la surcharge liée au stockage des enregistrements supprimés pour la récupération.
- Activez le mode de suppression rapide du bac à sable (sandbox) pour contourner le pipeline du Kit de développement logiciel (SDK) standard (plug-ins, workflows, corbeille). La suppression rapide permet d'atteindre un débit de suppression plus élevé.
Avertissement
N’exécutez pas les exemples présentés dans cet article comme écrit. Modifiez l’exemple de code approprié pour votre environnement de développement. Certains de ces exemples suppriment tous les comptes, ce qui n’est pas quelque chose que vous souhaiterez peut-être faire.
Utiliser le paramètre Options
Le Options paramètre accepte un BulkDeleteOptions objet avec les propriétés suivantes.
| Propriété | Type | Default | Description |
|---|---|---|---|
CanRecoverDeletedRecords |
Boolean | null (corbeille activée) | Lorsque la valeur est false, les enregistrements supprimés par le travail de suppression en bloc sont supprimés définitivement et ne peuvent pas être récupérés à partir de la corbeille. |
RunJobForSandbox |
Boolean | Nul (pipeline standard) | Lorsque la valeur est définie sur true, le travail de suppression en masse utilise le mode de suppression en bac à sable à haute performance, en contournant les plug-ins, les flux de travail et la corbeille. |
Important
Le Kit de développement logiciel (SDK) Dataverse pour .NET package NuGet contenant la classe BulkDeleteRequest n’a pas encore été mis à jour pour inclure la nouvelle propriété Options. Tant que ce package n’est pas mis à jour, vous pouvez accéder à la nouvelle propriété à l’aide d’une classe OrganizationRequest générique et spécifier le nom de la demande « bulkdelete » avec un paramètre « options ».
Exemple : paramètre Options
Les exemples suivants montrent comment utiliser le Options paramètre avec l’action ou la BulkDelete demande de message.
Utilisez la Options propriété dans le corps de la requête de l’action BulkDelete. Le Options paramètre est un type complexe BulkDeleteOptions.
Demande :
POST [Organization Uri]/api/data/v9.2/BulkDelete HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json
Content-Type: application/json
{
"QuerySet": [
{
"@odata.type": "Microsoft.Dynamics.CRM.QueryExpression",
"EntityName": "account",
"ColumnSet": {
"AllColumns": true
},
"Distinct": false
}
],
"JobName": "Delete all accounts",
"SendEmailNotification": false,
"ToRecipients": [],
"CCRecipients": [],
"RecurrencePattern": "",
"StartDateTime": "2026-03-13T06:30:00Z",
"Options": {
"CanRecoverDeletedRecords": true,
"RunJobForSandbox": false
}
}
Réponse :
HTTP/1.1 200 OK
OData-Version: 4.0
{
"@odata.context": "[Organization Uri]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.BulkDeleteResponse",
"JobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
Valeurs des paramètres d’options
| Scenario | PeutRécupérerEnregistrementsSupprimés | RunJobForSandbox | Résultat |
|---|---|---|---|
| Par défaut (suppression standard) | vrai ou omis | faux ou omis | Les enregistrements passent par le pipeline standard. Les enregistrements supprimés sont stockés dans la corbeille si elle est activée. |
| Ignorer la corbeille | faux | faux ou omis | Les enregistrements passent par le pipeline standard. La Corbeille est ignorée pour ce travail. |
| Suppression rapide du bac à sable | faux | vrai | Contourne le pipeline et la corbeille du Kit de développement logiciel (SDK). Débit maximal. |
Contrôler le comportement de la corbeille
Par défaut, lorsque la corbeille est activée pour votre environnement, tous les enregistrements supprimés par un travail de suppression en bloc sont stockés dans la corbeille avant la suppression. La corbeille permet aux administrateurs de récupérer accidentellement des enregistrements supprimés, mais ajoute une surcharge d’E/S significative pour chaque enregistrement supprimé.
Pour désactiver la corbeille lors d’un travail de suppression en bloc, définissez CanRecoverDeletedRecords sur false dans le paramètre Options. Ce paramètre peut environ doubler le débit de suppression en éliminant la surcharge de :
- Création d’enregistrements DeletedItemReference
- Copier les données des enregistrements dans les tables de stockage de la corbeille
- Mise à jour des objets blob de données de restauration pour chaque enregistrement supprimé
Avertissement
Quand la valeur de CanRecoverDeletedRecords est false, les enregistrements supprimés sont définitivement supprimés et ne peuvent pas être récupérés à partir de la corbeille. Cette action est irréversible. Vérifiez que vous avez vérifié les critères de requête et que vous disposez de sauvegardes appropriées avant d’exécuter un travail de suppression en bloc avec cette option. Ce paramètre affecte uniquement le travail de suppression en bloc actuel ; elle ne modifie pas la configuration de la corbeille au niveau de l’environnement.
Exemple : Désactiver la corbeille pour une suppression plus rapide
Supprimez définitivement les enregistrements sans les stocker dans la corbeille.
POST [Organization Uri]/api/data/v9.2/BulkDelete HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json
Content-Type: application/json
{
"QuerySet": [
{
"@odata.type": "Microsoft.Dynamics.CRM.QueryExpression",
"EntityName": "account",
"ColumnSet": {
"AllColumns": true
},
"Distinct": false
}
],
"JobName": "Delete accounts - skip recycle bin",
"SendEmailNotification": false,
"ToRecipients": [],
"CCRecipients": [],
"RecurrencePattern": "",
"StartDateTime": "2026-03-13T06:30:00Z",
"Options": {
"CanRecoverDeletedRecords": false
}
}
Suppression rapide du bac à sable
Pour les scénarios nécessitant un débit de suppression maximal, vous pouvez activer le mode de suppression rapide de bac à sable en définissant RunJobForSandbox sur true. Dans ce mode, le travail de suppression en bloc contourne entièrement le pipeline du Kit de développement logiciel (SDK) standard et utilise la suppression directe du moteur en cascade, ce qui permet d’obtenir un débit plus élevé.
Lorsque la suppression rapide du bac à sable est activée, les éléments suivants sont ignorés :
- Exécution du plug-in pré-opération et post-opération
- Déclencheurs de flux de travail synchrones et asynchrones
- Espace de stockage de la corbeille (les enregistrements sont supprimés définitivement)
- Logique métier personnalisée inscrite sur le message Supprimer
Les éléments suivants sont conservés lors de la suppression rapide :
- Règles de suppression en cascade basées sur la configuration de la relation de table
- Intégrité référentielle (relations de clé étrangère)
- Vérifications des privilèges de sécurité
- Synchroniser le suivi des modifications pour la réplication en aval
Important
Le mode de suppression rapide de Bac à Sable contourne complètement le pipeline de plug-in du SDK. Les plug-ins, flux de travail ou logique métier personnalisés inscrits sur le message Delete ne s’exécutent pas pour les enregistrements supprimés dans ce mode. Les plug-ins d’audit, les plug-ins d’intégration et toute logique de validation personnalisée sont incluses. En outre, les enregistrements supprimés en mode bac à sable ne peuvent pas être récupérés à partir de la corbeille. Utilisez cette option uniquement lorsque vous êtes certain qu’aucune logique métier critique ne dépend de l’exécution du plug-in au moment de la suppression, et que la suppression définitive et irrécupérable est acceptable.
Exemple : Suppression rapide du bac à sable
Découvrez comment utiliser le mode de suppression sandbox haute performance pour optimiser le débit.
POST [Organization Uri]/api/data/v9.2/BulkDelete HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json
Content-Type: application/json
{
"QuerySet": [
{
"@odata.type": "Microsoft.Dynamics.CRM.QueryExpression",
"EntityName": "account",
"ColumnSet": {
"AllColumns": true
},
"Distinct": false
}
],
"JobName": "Delete accounts - sandbox fast delete",
"SendEmailNotification": false,
"ToRecipients": [],
"CCRecipients": [],
"RecurrencePattern": "",
"StartDateTime": "2026-03-13T06:30:00Z",
"Options": {
"CanRecoverDeletedRecords": false,
"RunJobForSandbox": true
}
}
Données conservées à long terme
La suppression en bloc est également disponible pour les données conservées à long terme. Exécutez une suppression en bloc comme vous le feriez normalement, mais définissez le champ de DataSource la requête sur conservé.
Définissez la QueryExpressionDataSource propriété retained dans une action BulkDelete de l’API Web pour indiquer que la requête concerne uniquement les lignes conservées.
Demande :
POST [Organization Uri]/api/data/v9.2/BulkDelete HTTP/1.1
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json
Content-Type: application/json
{
"QuerySet":
[
{
"EntityName": "contact",
"DataSource": "retained",
"Criteria":
{
"FilterOperator": "And",
"Conditions":
[
{
"AttributeName": "firstname",
"Operator": "Equal",
"Values" : [{"Value":"Bob","Type":"System.String"}]
}
]
}
}
],
"JobName": "Bulk Delete Retained Contacts",
"SendEmailNotification": false,
"RecurrencePattern": "",
"StartDateTime": "2023-03-07T05:00:00Z",
"ToRecipients": [],
"CCRecipients": []
}
Réponse :
HTTP/1.1 200 OK
{
"@odata.context": "[Organization Uri]/api/data/v9.1/$metadata#Microsoft.Dynamics.CRM.BulkDeleteResponse",
"JobId": "3093d67f-21f0-ed11-8b48-6045bdd92a32"
}
Échantillons
Examinez les exemples suivants du Kit de développement logiciel (SDK) .NET pour la fonctionnalité de suppression en bloc :
- Exemple : Supprimer en bloc des enregistrements exportés
- Exemple : Supprimer en bloc des enregistrements qui correspondent à des critères courants