Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Das Feature zum Massenlöschen in Microsoft Dataverse hilft Ihnen, die Datenqualität aufrechtzuerhalten und den Verbrauch des Systemspeichers zu verwalten, indem Sie daten löschen, die Sie nicht mehr benötigen. So können Sie beispielsweise die folgenden Daten in einem Massenvorgang löschen:
- Veraltete Daten
- Daten, die für das Unternehmen nicht mehr relevant sind
- Nicht benötigte Test- oder Beispieldaten
- Daten, die falsch aus anderen Systemen importiert wurden
Sie können die folgenden Vorgänge durchführen:
- Daten über mehrere Tabellen hinweg löschen
- Löschen von Datensätzen in einer bestimmten Tabelle.
- E-Mail-Benachrichtigungen erhalten, wenn eine Massenlöschung abgeschlossen wurde
- Daten periodisch löschen
- Die Startzeit einer wiederkehrenden Massenlöschung planen
- Abrufen von Informationen zu Fehlern, die während eines Massenlöschvorgangs aufgetreten sind.
Wenn Sie mehrere Zeilen in elastischen Tabellen löschen möchten, können Sie auch die DeleteMultiple Nachricht verwenden.
DeleteMultiple löscht Datensätze in einem einzelnen Elastic sofort, anstatt einen Massenlöschauftrag zu verwenden.
Massenlöschvorgang ausführen
Um Daten in Massen zu löschen, verwenden Sie die BulkDelete Nachricht, um einen Massenlöschauftrag zu senden. Verwenden Sie mithilfe des SDK die BulkDeleteRequest-Klasse. Verwenden Sie mithilfe der Web-API die BulkDelete-Aktion. Geben Sie die Abfrageausdrücke an, die die zu löschenden Datensätze in der QuerySet Eigenschaft Ihrer Anforderung beschreiben.
Ein Massenlöschauftrag wird durch einen Datensatz in der Bulk Delete Operation (BulkDeleteOperation) Tabelle dargestellt. Ein Datensatz für einen Massenlöschvorgang enthält die folgenden Informationen:
- Die Anzahl der Datensätze, die der Auftrag gelöscht hat
- Die Anzahl der Datensätze, die der Auftrag nicht löschen konnte
- Ob der Auftrag wiederkehrend ist.
- Die Startzeit des Auftrags
Der Massenlöschauftrag wird asynchron ausgeführt, ohne andere Aktivitäten zu blockieren. Es löscht nur Datensätze, die erstellt wurden, bevor der Auftrag gestartet wird. Der Auftrag löscht die angegebenen Datensätze gemäß den Kaskadierungsregeln, die auf dem Kaskadierungsverhalten von Tabellenbeziehungen basieren.
Wenn ein Massenlöschauftrag fehlschlägt oder vorzeitig beendet wird, führt der Vorgang kein Rollback für gelöschte Datensätze durch. Die Aufzeichnungsdaten bleiben gelöscht. Ein Datensatz von Fehlern wird in der Bulk Delete Failure (BulkDeleteFailure) Tabelle gespeichert. Sie können Informationen aus der Tabelle zu dem Fehler abrufen, der den Fehler verursacht hat.
Um einen Massenlöschauftrag auszuführen, müssen Sie über BulkDelete und Delete Berechtigungen für die Tabellentypen, die Sie löschen, verfügen. Außerdem müssen Sie über Leseberechtigungen für die Tabellendatensätze verfügen, die Sie in der QuerySet Eigenschaft angeben. Ein Systemadministrator verfügt standardmäßig über die erforderlichen Berechtigungen. Gewähren Sie diese anderen Benutzern.
Sie können einen Massenlöschvorgang für alle Tabellen ausführen, die die Delete Nachricht unterstützen.
Wenn die Löschaktion für einen bestimmten Tabellentyp ein Plug-In oder einen Workflow (Prozess) auslöst, löst der Massenlöschauftrag das Plug-In oder den Workflow jedes Mal aus, wenn er einen Tabellendatensatz dieses Typs löscht.
Massenlöschverarbeitung steuern (Vorschau)
[Dieser Abschnitt ist die Vorabveröffentlichungsdokumentation und unterliegt Änderungen.]
Important
- Hierbei handelt es sich um eine produktionsbereite Previewfunktion.
- Für produktionsbereite Vorschauversionen gelten zusätzliche Nutzungsbedingungen.
Mit Options dem Parameter für die BulkDeleteAktion oder Nachrichtenanforderung können Sie steuern, wie der Massenlöschauftrag Tabellenzeilen (Datensätze) verarbeitet. Sie können den Parameter verwenden, um:
- Deaktivieren Sie den Papierkorb für massenweise gelöschte Datensätze. Durch Deaktivieren des Papierkorbs wird die Leistung verbessert, indem der Aufwand für das Speichern gelöschter Datensätze für die Wiederherstellung übersprungen wird.
- Aktivieren Sie den Modus für schnelles Löschen im Sandkasten, um die Standard-SDK-Pipeline (Plug-Ins, Workflows, Papierkorb) zu umgehen. Schnelles Löschen erreicht einen höheren Löschdurchsatz.
Warning
Führen Sie die in diesem Artikel gezeigten Beispiele nicht wie geschrieben aus. Ändern Sie den Beispielcode entsprechend ihrer Entwicklungsumgebung. Einige dieser Beispiele löschen alle Konten, was Sie möglicherweise nicht wollen.
Verwenden des Optionsparameters
Der Options Parameter akzeptiert ein BulkDeleteOptions Objekt mit den folgenden Eigenschaften.
| Eigentum | Typ | Vorgabe | Description |
|---|---|---|---|
CanRecoverDeletedRecords |
Boolean | null (Papierkorb aktiviert) | Wenn der Wert auf "false" gesetzt ist, werden die vom Massenlöschauftrag gelöschten Datensätze endgültig entfernt und können nicht aus dem Papierkorb wiederhergestellt werden. |
RunJobForSandbox |
Boolean | null (Standardpipeline) | Bei Festlegung auf "true" verwendet der Massenentfernungsauftrag den Hochleistungs-Sandkasten-Löschmodus und umgeht dabei Plug-Ins, Workflows und den Papierkorb. |
Important
Das Dataverse SDK für .NET NuGet-Paket mit dem BulkDeleteRequest Klasse wurde noch nicht aktualisiert, um die neue Options-Eigenschaft einzuschließen. Bis zum Aktualisieren dieses Pakets können Sie mithilfe einer generischen OrganizationRequest-Klasse auf die neue Eigenschaft zugreifen und den Anforderungsnamen "bulkdelete" mit einem Parameter "options" angeben.
Beispiel: Options-Parameter
Die folgenden Beispiele veranschaulichen die Verwendung des Options Parameters mit der BulkDelete Aktion oder Nachrichtenanforderung.
Verwenden Sie die Options Eigenschaft im Anforderungstext der BulkDelete-Aktion. Der Options Parameter ist ein komplexer BulkDeleteOptions-Typ.
Anforderung:
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
}
}
Antwort:
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"
}
Optionsparameterwerte
| Szenario | KannGelöschteDatensätzeWiederherstellen | RunJobForSandbox | Auswirkung |
|---|---|---|---|
| Standardeinstellung (Standardlöschung) | true oder weggelassen | falsch oder weggelassen | Datensätze durchlaufen die Standardpipeline. Gelöschte Datensätze werden im Papierkorb gespeichert, wenn aktiviert. |
| Papierkorb überspringen | FALSCH | falsch oder weggelassen | Datensätze durchlaufen die Standardpipeline. Der Papierkorb wird für diese Aufgabe übersprungen. |
| Schnelllöschung von Sandbox | FALSCH | STIMMT | Umgeht die SDK-Pipeline und den Papierkorb. Maximaler Durchsatz. |
Steuerung des Papierkorbverhaltens
Standardmäßig werden alle Datensätze, die durch einen Massenlöschauftrag gelöscht werden, im Papierkorb gespeichert, wenn dieser für Ihre Umgebung aktiviert ist, und erst dann endgültig gelöscht. Der Papierkorb ermöglicht es den Administratoren, versehentlich gelöschte Datensätze wiederherzustellen, fügt jedoch für jeden gelöschten Datensatz einen erheblichen Eingabe/Ausgabe-Aufwand hinzu.
Um den Papierkorb für einen Massenlöschauftrag zu deaktivieren, setzen Sie CanRecoverDeletedRecords auf false im Parameter Options. Diese Einstellung kann den Löschdurchsatz etwa verdoppeln, indem der Aufwand für Folgendes beseitigt wird:
- Erstellen von DeletedItemReference-Datensätzen
- Kopieren von Datensätzen in den Wiederherstellungsspeicher
- Aktualisierung der Wiederherstellungs-Blobs für jeden gelöschten Datensatz
Warning
Wenn CanRecoverDeletedRecords auf "false" festgelegt ist, werden gelöschte Datensätze endgültig entfernt und können nicht aus dem Papierkorb wiederhergestellt werden. Diese Aktion kann nicht rückgängig gemacht werden. Stellen Sie sicher, dass Sie die Abfragekriterien überprüft haben und über geeignete Sicherungen verfügen, bevor Sie einen Massenlöschauftrag mit dieser Option ausführen. Diese Einstellung wirkt sich nur auf den aktuellen Massenlöschvorgang aus; die umgebungsbezogene Papierkorbeinstellungen werden nicht geändert.
Beispiel: Deaktivieren des Papierkorbs, um schneller zu löschen
Löschen Sie Datensätze dauerhaft, ohne sie im Papierkorb zu speichern.
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
}
}
Schnelllöschung von Sandbox
Für Szenarien, die einen maximalen Löschdurchsatz erfordern, können Sie den schnellen Löschmodus für Sandkasten aktivieren, indem Sie RunJobForSandbox auf true festlegen. In diesem Modus umgeht der Massenlöschvorgang die Standard-SDK-Pipeline vollständig und verwendet direkte Cascade-Engine-Löschung, um einen höheren Durchsatz zu erreichen.
Wenn sandkastenschnelles Löschen aktiviert ist, werden folgende Punkte übersprungen:
- Ausführung von Plug-Ins vor und nach der Operation
- Synchrone und asynchrone Workflowtrigger
- Papierkorbspeicher (Datensätze werden endgültig gelöscht)
- Benutzerdefinierte Geschäftslogik, die in der Löschnachricht registriert ist
Folgendes wird beim schnellen Löschen beibehalten:
- Cascade-Löschregeln basierend auf der Tabellenbeziehungskonfiguration
- Referenzielle Integrität (Fremdschlüsselbeziehungen)
- Sicherheitsberechtigungsprüfungen
- Synchronisierung der Änderungsnachverfolgung für nachgeschaltete Replikation
Important
Der Sandkasten-Schnelllöschmodus umgeht die gesamte SDK-Plug-In-Pipeline. Alle benutzerdefinierten Plug-Ins, Workflows oder Geschäftslogik, die in der Löschnachricht registriert sind, werden nicht für Datensätze ausgeführt, die in diesem Modus gelöscht wurden. Enthalten sind Überwachungs-Plug-Ins, Integrations-Plug-Ins und beliebige benutzerdefinierte Validierungslogik. Darüber hinaus können gelöschte Datensätze im Sandbox-Modus nicht aus dem Papierkorb wiederhergestellt werden. Verwenden Sie diese Option nur, wenn Sie sicher sind, dass keine kritische Geschäftslogik von der Ausführung des Löschzeit-Plug-Ins abhängt, und dass eine dauerhafte, nicht wiederherstellbare Löschung akzeptabel ist.
Beispiel: Schnelles Löschen des Sandkastens
Erfahren Sie, wie Sie den High-Performance-Sandbox-Löschmodus für den maximalen Durchsatz verwenden.
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
}
}
Langfristig aufbewahrte Daten
Massenlöschung steht auch für langfristig aufbewahrte Daten zur Verfügung. Führen Sie wie gewohnt einen Massenlöschvorgang aus, legen Sie jedoch das Feld der Abfrage DataSource so fest, dass sie beibehalten wird.
Legen Sie die QueryExpressionDataSource-Eigenschaft auf retained in einer Web-API-BulkDelete-Aktion fest, um anzugeben, dass die Abfrage nur für aufbewahrte Zeilen vorgesehen ist.
Anforderung:
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": []
}
Antwort:
HTTP/1.1 200 OK
{
"@odata.context": "[Organization Uri]/api/data/v9.1/$metadata#Microsoft.Dynamics.CRM.BulkDeleteResponse",
"JobId": "3093d67f-21f0-ed11-8b48-6045bdd92a32"
}
Beispiele
Sehen Sie sich das folgende SDK für .NET-Beispiele für das Feature zum Massenlöschen an:
- Beispiel: Massenlöschung exportierter Datensätze
- Beispiel: Massenlöschen von Datensätzen, die allgemeinen Kriterien entsprechen