Compartir a través de


Eliminar datos en masa

La característica de eliminación masiva de Microsoft Dataverse le ayuda a mantener la calidad de los datos y administrar el consumo de almacenamiento del sistema eliminando los datos que ya no necesita. Por ejemplo, puede eliminar los siguientes datos en masa:

  • Datos obsoletos
  • Datos que ya no son relevantes para la empresa
  • Datos de prueba o de ejemplo innecesarios
  • Datos que se importaron incorrectamente desde otros sistemas

Y puede realizar las siguientes operaciones:

  • Eliminar datos en varias tablas.
  • Eliminar registros de una tabla específica.
  • Recibir notificaciones por correo electrónico cuando finaliza una eliminación en masa.
  • Eliminar datos periódicamente.
  • Programar la hora de inicio de una eliminación en masa periódica.
  • Recupere información sobre los errores que se produjeron durante una eliminación masiva.

Para eliminar varias filas en tablas elásticas, también puede usar el DeleteMultiple mensaje. DeleteMultiple elimina registros en un solo elástico inmediatamente, en lugar de usar un trabajo de eliminación masiva.

Ejecutar eliminación en masa

Para eliminar datos de forma masiva, use el BulkDelete mensaje para enviar un trabajo de eliminación masiva. Con el SDK, use la clase BulkDeleteRequest. Con la API web, utilice la acción BulkDelete. Especifique las expresiones de consulta que describen los registros que se van a eliminar en la propiedad QuerySet de su solicitud.

Un trabajo de eliminación masiva se representa mediante un registro en la Bulk Delete Operation tabla (BulkDeleteOperation). Un registro de operación de eliminación masiva incluye la siguiente información:

  • El número de registros que eliminó el trabajo
  • Número de registros que el trabajo no pudo eliminar
  • Si el trabajo está programado para repetirse
  • Hora de inicio del trabajo

El trabajo de eliminación masiva se ejecuta de forma asincrónica sin bloquear otras actividades. Solo elimina los registros que se crearon antes de que el trabajo empiece a ejecutarse. El trabajo elimina los registros especificados de acuerdo con las reglas en cascada basadas en el comportamiento en cascada de relaciones de tabla.

Si se produce un error en un trabajo de eliminación masiva o finaliza prematuramente, los registros eliminados no se revierten. Permanecen eliminados. Un registro de errores se almacena en la Bulk Delete Failure tabla (BulkDeleteFailure). Puede recuperar información de la tabla sobre el error que provocó el fallo.

Para ejecutar un trabajo de eliminación masiva, debe tener privilegios BulkDelete y Delete sobre los tipos de tabla que se van a eliminar. También debe tener permisos de lectura en los registros de la tabla especificados en la propiedad QuerySet. Un administrador del sistema tiene los permisos necesarios de forma predeterminada. Se deben otorgar a otros usuarios.

Puede realizar una eliminación masiva en todas las tablas que admiten el Delete mensaje.

Si la acción de eliminación de un tipo de tabla específico desencadena un complemento o un flujo de trabajo (proceso), el complemento o el flujo de trabajo se desencadena cada vez que el trabajo de eliminación masiva elimina un registro de tabla de ese tipo.

Datos retenidos a largo plazo

La eliminación masiva también está disponible para los datos retenidos a largo plazo. Ejecute una eliminación masiva como lo haría normalmente, pero establezca el campo de DataSource de la consulta a retained.

Con el SDK, puede usar QueryExpression o la clase FetchXmlToQueryExpressionRequest con IOrganizationService.Execute para convertir FetchXml en .QueryExpression

QueryExpression

Use la propiedad QueryExpression.DataSource para indicar que la consulta solo es para filas conservadas. Establezca el valor en retained para eliminar masivamente los datos retenidos.

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

Agregue el datasource='retained' atributo al fetch elemento para indicar que la consulta solo está destinada a las filas conservadas.

static Guid BulkDeleteRetainedAccountsFetchXmlExample(IOrganizationService service) {
            
    var convertRequest = new FetchXmlToQueryExpressionRequest
    {
        FetchXml = @"
        <fetch 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;
}

Samples

Examine los siguientes ejemplos del SDK para .NET para la característica de eliminación masiva:

Consulte también

Retención de datos a largo plazo
Tabla BulkDeleteOperation