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 importées incorrectement à 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 paramètre Options sur l’BulkDeleteaction contrôle la façon dont la tâche de suppression en bloc traite les lignes du tableau (enregistrements). Utilisez le paramètre pour :
- Désactivez la conservation des enregistrements supprimés pour les enregistrements supprimés en bloc. La désactivation de la conservation des enregistrements supprimés améliore les performances en ignorant la surcharge de 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, flux de travail, conservation des enregistrements supprimés). La suppression rapide permet d'atteindre un débit de suppression plus élevé. Cette propriété est prise en charge uniquement dans les environnements de test. Lorsqu’elles sont utilisées sur d’autres types d’environnement, notamment la production, les suppressions suivent le processus standard et honorent les plug-ins, les flux de travail et les stratégies de conservation des enregistrements supprimées.
Note
La prise en charge de la possibilité d’utiliser le nouveau paramètre Options avec le Kit de développement logiciel (SDK) pour .NET de contrôler le traitement de suppression en bloc est prévue pour une prochaine version.
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 (suppression de la conservation des enregistrements 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. Si la conservation des enregistrements supprimés est déjà désactivée pour l’environnement, la définition CanRecoverDeletedRecords de la valeur true ne conserve pas les enregistrements supprimés pour ce travail pour une récupération ultérieure. |
RunJobForSandbox |
Boolean | Nul (pipeline standard) | Lorsqu’elle est définie sur true, la tâche de suppression en bloc utilise le mode de suppression en bac à sable hautes performances, en contournant les plug-ins, les flux de travail et l’archivage des enregistrements supprimés. Cette propriété est particulièrement utile pour supprimer d’importants volumes de données des environnements sandbox après une copie de l’environnement de production. Uniquement pris en charge dans les environnements sandbox. Lorsqu’elles sont utilisées sur d’autres types d’environnement, notamment la production, les suppressions suivent le processus standard et honorent les plug-ins, les flux de travail et les stratégies de conservation des enregistrements supprimées. |
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 souhaitez faire.
Exemple : paramètre Options
Les exemples suivants montrent comment utiliser le Options paramètre avec l’action BulkDelete .
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 continuent d’utiliser le pipeline de suppression standard. Si la conservation des enregistrements supprimés est déjà désactivée pour l’environnement, la définition CanRecoverDeletedRecords de la valeur true ne conserve pas les enregistrements supprimés pour ce travail pour une récupération ultérieure. |
| Ignorer la conservation des enregistrements supprimés | faux | faux ou omis | Les enregistrements continuent d’utiliser le processus standard de suppression, mais contournent la conservation des enregistrements supprimés pour cette tâche. Si la conservation des enregistrements supprimés est déjà activée pour l’environnement, la définition CanRecoverDeletedRecords de false contourne la conservation des enregistrements supprimés pour ce travail spécifique. |
| Suppression rapide du bac à sable | faux | vrai | Contourne la conservation des enregistrements supprimés et le pipeline du SDK. Débit maximal. |
Contrôler le comportement de conservation des enregistrements supprimés
Par défaut, lorsque vous activez la conservation des enregistrements supprimés pour votre environnement, le système conserve tous les enregistrements qu’un travail de suppression en bloc supprime avant de les supprimer. La conservation des enregistrements supprimés permet aux administrateurs de récupérer accidentellement les enregistrements supprimés, mais il ajoute une surcharge d’E/S significative pour chaque enregistrement supprimé.
Pour désactiver la conservation des enregistrements supprimés pour une tâche 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 - Copie des données d’enregistrement dans des tables de stockage bin pour une récupération ultérieure
- Mise à jour des objets blob de données de restauration pour chaque enregistrement supprimé
Avertissement
Lorsque vous définissez CanRecoverDeletedRecords la valeur false, le travail de suppression en bloc supprime définitivement les enregistrements supprimés et ne peut pas les récupérer. 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 conservation des enregistrements supprimés au niveau de l’environnement.
Exemple : Désactiver la conservation des enregistrements supprimés pour une suppression plus rapide
Supprimez définitivement les enregistrements sans les stocker pour une récupération ultérieure.
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 maximal de suppression, définissez RunJobForSandbox sur true pour activer le mode de suppression rapide du bac à sable. 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 vous permet d’obtenir un débit plus élevé.
Important
Cette propriété est particulièrement utile pour supprimer d’importants volumes de données des environnements sandbox après une copie de l’environnement de production. Elle est prise en charge uniquement dans les environnements de bac à sable. Lorsqu’elles sont utilisées sur d’autres types d’environnement, notamment la production, les suppressions suivent le processus standard et honorent les plug-ins, les flux de travail et les stratégies de conservation des enregistrements supprimées.
Lorsque la suppression rapide du bac à sable est activée, les opérations suivantes sont ignorées :
- Exécution du plug-in pré-opération et post-opération
- Déclencheurs de flux de travail synchrones et asynchrones
- Conservation des enregistrements supprimés (les enregistrements sont définitivement supprimés)
- Logique métier personnalisée inscrite sur le message Supprimer
Le processus conserve les éléments suivants lorsqu’il effectue une 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 sandbox contourne l’ensemble du pipeline de plug-ins Event Framework. Les plug-ins, workflows ou logique métier personnalisés inscrits sur le message Supprimer ne s’exécutent pas pour les enregistrements supprimés dans ce mode. Cette restriction inclut les plug-ins d’audit, les plug-ins d’intégration et toute logique de validation personnalisée. En outre, vous ne pouvez pas récupérer les enregistrements supprimés en mode bac à sable. 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
Pour en savoir plus sur la fonctionnalité de suppression en bloc, consultez le Kit de développement logiciel (SDK) suivant pour .NET exemples :
- Exemple : Supprimer en bloc des enregistrements exportés
- Exemple : Supprimer en bloc des enregistrements qui correspondent à des critères courants