Compartir a través de


Eliminar datos en masa

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

  • Datos obsoletos
  • Datos que ya no son relevntes para el negocio
  • Datos de ejemplo o de prueba innecesarios
  • Datos que se importaron incorrectamente desde otros sistemas

Y puede realizar las siguientes operaiocnes:

  • Eliminar datos en varias tablas.
  • Eliminar registros en una tabla especificada.
  • 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.
  • Recuperar la información acerca de los errores que se han producido durante una eliminación en masa.

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

Ejecutar eliminación en masa

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

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

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

El trabajo de eliminación en masa se ejecuta asincrónicamente sin bloquear otras actividades. Solo elimina los registros que se crearon antes de que el trabajo iniciase su ejecución. El trabajo elimina los registros especificados de acuerdo con las reglas en cascada basadas en el comportamiento en cascada de relaciones de tabla.

Si un trabajo de eliminación masiva falla o finaliza prematuramente, los registros que eliminó no se revierten. Quedan borrados. Se almacena un registro de fallas en la tabla Bulk Delete Failure (BulkDeleteFailure). Puede recuperar información de la tabla sobre el error que provocó la falla.

Para ejecutar un trabajo de eliminación en masa, un usuario debe tener privilegios BulkDelete y Delete para los tipos de tabla que se están eliminando. Debe tener también permisos de lectura en los registros de tabla que se especifiquen en la propiedad QuerySet. Un Administrador del sistema tiene los permisos necesarios por defecto. Se deben otorgar a otros usuarios.

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

Si la acción de eliminacion de un tipo de tabal específico desencadena un complemento o un flujo de trabajo (proceso), este se desencadena cada vez que un registro de tabla de este tipo es eliminado por el trabajo de eliminación en masa.

Datos retenidos a largo plazo

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

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

QueryExpression

Utilice la propiedad QueryExpression.DataSource para indicar que la consulta es solo para filas retenidas. Establezca el valor en retained para eliminar de forma masiva 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 atributo datasource='retained'al elemento fetch para indicar que la consulta es solo para filas retenidas.

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;
}

Ejemplos

Busque en los siguientes ejemplos de SDK para .NET la característica de cancelación en masa:

Consulte también

Retención de datos a largo plazo
Tabla BulkDeleteOperation

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).