Löschen von Datensätzen in einem Massenvorgang

Die Funktion „Massenlöschung“ in Microsoft Dataverse hilft Ihnen, die Datenqualität aufrechtzuerhalten und den Verbrauch von Systemspeicher 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
  • Unnötige Test- oder Beispieldaten
  • Daten, die fälschlicherweise aus anderen Systemen importiert wurden

Und Sie können die folgenden Vorgänge durchführen:

  • Daten über mehrere Tabellen löschen.
  • Datensätze in einer bestimmten Tabelle löschen.
  • E-Mail-Benachrichtigungen erhalten, wenn eine Massenlöschung endet.
  • Löschen Sie Daten in regelmäßigen Intervallen.
  • Planen Sie die Startzeit einer Serienmassenlöschung.
  • Rufen Sie Informationen zu Fehlern ab, die während einer Massenlöschung aufgetreten sind.

Um mehrere Zeilen in elastischen Tabellen zu löschen, 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öschung durchführen

Um Daten in großen Mengen zu löschen, verwenden Sie die Nachricht BulkDelete, um einen Auftrag zum Löschen in großen Mengen zu senden. Mit dem SDK verwenden Sie die BulkDeleteRequest Klasse. Verwenden Sie mit der Web-API die BulkDelete-Aktion. Geben Sie die Abfrageausdrücke, die die zu löschenden Datensätze beschreiben, in der Eigenschaft QuerySet Ihrer Anfrage an.

Ein Auftrag zur Massenlöschung wird durch einen Datensatz in der Tabelle Bulk Delete Operation (BulkDeleteOperation) dargestellt. Ein Massenlöschungsvorgangsdatensatz 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 auf Wiederholung eingestellt ist
  • Die Startzeit des Auftrags

Der Massenlöschungsauftrag wird asynchron im Hintergrund ausgeführt, ohne andere Aktivitäten zu blockieren. Es werden nur Datensätze gelöscht, die erstellt wurden, bevor der Auftrag ausgeführt 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, werden die gelöschten Datensätze nicht zurückgesetzt. Sie bleiben gelöscht. Ein Datensatz über Fehlschläge wird in der Tabelle Bulk Delete Failure (BulkDeleteFailure) gespeichert. Sie können aus der Tabelle Informationen über den Fehler abrufen, der den Fehlschlag verursacht hat.

Um einen Auftrag zum Massenlöschen auszuführen, müssen Sie über die Berechtigungen BulkDelete und Delete für die zu löschenden Tabellentypen verfügen. Außerdem müssen Sie über Leseberechtigungen für die Datensätze der Tabelle verfügen, die in der Eigenschaft QuerySet angegeben sind. Ein Systemadministrator verfügt standardmäßig über die erforderlichen Berechtigungen. Anderen Benutzern müssen sie gewährt werden.

Sie können eine Massenlöschung für alle Tabellen durchführen, die die Delete Nachricht unterstützen.

Wenn die Massenaktion zum Löschen eines bestimmten Tabellentyps ein Plug-in oder einen Workflow (Prozess) auslöst, wird das Plug-in oder der Workflow jedes Mal ausgelöst, wenn der Auftrag zum Massenlöschen einen Datensatz dieses Typs löscht.

Langfristig gespeicherte Daten

Die Massenlöschung ist auch für langfristig gespeicherte Daten verfügbar. Führen Sie eine Massenlöschung wie gewohnt aus, aber setzen Sie das Feld DataSource der Abfrage auf beibehalten.

Mit dem SDK können Sie entweder QueryExpression oder die FetchXmlToQueryExpressionRequest Klasse mit IOrganizationService.Execute verwenden, um FetchXml in eine QueryExpression zu konvertieren.

QueryExpression

Verwenden Sie die Eigenschaft QueryExpression.DataSource, um anzugeben, dass sich die Abfrage nur auf erhaltene Zeilen bezieht. Setzen Sie den Wert auf retained, um beibehaltene Daten in großen Mengen zu löschen.

static Guid BulkDeleteRetainedAccountsExample(IOrganizationService service)
{
    var request = new BulkDeleteRequest
    {
        JobName = "Bulk Delete Retained Accounts"
    };

    // Create query and add additional filters as needed
    QueryExpression query = new QueryExpression
    {
        EntityName = "account",
        DataSource = "retained"
    };

    request.QuerySet = new QueryExpression[]{query};

    request.StartDateTime = DateTime.Now;
    request.RecurrencePattern = string.Empty;
    request.SendEmailNotification = false;
    request.ToRecipients = Array.Empty<Guid>();
    request.CCRecipients = Array.Empty<Guid>();

    BulkDeleteResponse response = (BulkDeleteResponse)service.Execute(request);
    return response.JobId;
}

FetchXML

Fügen Sie das Attribut datasource='retained' zum Element fetch hinzu, um anzugeben, dass die Abfrage nur für beibehaltene Zeilen gilt.

static Guid BulkDeleteRetainedAccountsFetchXmlExample(IOrganizationService service) {
            
    var convertRequest = new FetchXmlToQueryExpressionRequest
    {
        FetchXml = @"
        <fetch version='1.0' output-format='xml-platform' mapping='logical' datasource='retained'>
            <entity name='account'>
        </entity>
        </fetch>"
    };

    FetchXmlToQueryExpressionResponse convertResponse = (FetchXmlToQueryExpressionResponse)service.Execute(convertRequest);

    var request = new BulkDeleteRequest
    { JobName = "Bulk Delete Retained Accounts" };

    request.QuerySet = new QueryExpression[]{convertResponse.Query};

    request.StartDateTime = DateTime.Now;
    request.RecurrencePattern = string.Empty;
    request.SendEmailNotification = false;
    request.ToRecipients = Array.Empty<Guid>();
    request.CCRecipients = Array.Empty<Guid>();
           
    BulkDeleteResponse response = (BulkDeleteResponse)service.Execute(request);
    return response.JobId;
}

Beispiele

Schauen Sie sich die folgenden Beispiele für SDK für .NET für die Massenlöschfunktion an:

Siehe auch

Langfristige Datenspeicherung
BulkDeleteOperation Tabelle

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).