Eliminar datos en masa

La característica de eliminación masiva de Microsoft Dataverse le ayuda a mantener la calidad de los datos y a 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

Puede realizar las siguientes operaciones:

  • Eliminar datos en varias tablas.
  • Eliminar registros de una tabla específica.
  • Recibir notificaciones por correo electrónico cuando finalice una eliminación en masa.
  • Eliminar datos periódicamente.
  • Programar la hora de inicio de una eliminación masiva 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. Usando el SDK, use la clase BulkDeleteRequest. Mediante la Web API, use 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:

  • 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 según las reglas de cascada derivadas del comportamiento de las relaciones entre tablas.

Si se produce un error en un trabajo de eliminación masiva o finaliza prematuramente, la operación no revierte ningún registro eliminado. Los datos del registro 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 BulkDelete y Delete privilegios en los tipos de tabla que se están eliminando. También debe tener permisos de lectura en los registros de tabla que especifique en la propiedad QuerySet. Un administrador del sistema tiene los permisos necesarios de forma predeterminada. Concédales 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 trabajo de eliminación masiva desencadena el complemento o el flujo de trabajo cada vez que elimina un registro de tabla de ese tipo.

Control del procesamiento de eliminación masiva

El Options parámetro en la BulkDeleteacción o la solicitud de mensaje permite controlar cómo el trabajo de eliminación masiva procesa las filas de la tabla (registros). Puede usar el parámetro para:

  • Deshabilite la papelera de reciclaje para los registros eliminados de forma masiva. Deshabilitar la papelera de reciclaje mejora el rendimiento omitiendo la sobrecarga de almacenar registros eliminados para la recuperación.
  • Habilitar el modo de eliminación rápida de sandbox para omitir el pipeline del SDK estándar (complementos, flujos de trabajo, papelera de reciclaje). La eliminación rápida logra un mayor rendimiento de eliminación.

Warning

No ejecute los ejemplos que se muestran en este artículo como se ha escrito. Modifique el código de ejemplo según corresponda para el entorno de desarrollo. Algunos de estos ejemplos eliminan todas las cuentas, lo cual puede no ser algo que desees hacer.

Uso del parámetro Options

El Options parámetro acepta un BulkDeleteOptions objeto con las siguientes propiedades.

Propiedad Type Valor predeterminado Descripción
CanRecoverDeletedRecords Boolean null (papelera de reciclaje habilitada) Cuando se establece en false, los registros eliminados por el trabajo de eliminación masiva se eliminan permanentemente y no se pueden recuperar de la papelera de reciclaje.
RunJobForSandbox Boolean nulo (proceso estándar) Cuando se establece en verdadero, el trabajo de eliminación masiva utiliza el modo de eliminación de entorno de pruebas de alto rendimiento, omitiendo complementos, flujos de trabajo y la papelera de reciclaje.

Importante

El paquete NuGet del SDK de Dataverse para .NET que contiene la clase BulkDeleteRequest aún no se ha actualizado para incluir la nueva propiedad Options. Hasta que se actualice ese paquete, puede acceder a la nueva propiedad mediante una clase OrganizationRequest genérica y especificar el nombre de solicitud "bulkdelete" con un parámetro "options".

Ejemplo: Parámetro Opciones

En los siguientes ejemplos se muestra cómo usar el parámetro Options con la acción o la petición de mensaje BulkDelete.

Utilice la propiedad Options en el cuerpo de la solicitud de la acción BulkDelete. El Options parámetro es un tipo complejo BulkDeleteOptions.

Solicitud:

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

Respuesta:

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"
}
Valores de parámetro de opciones
Escenario PuedeRecuperarRegistrosEliminados RunJobForSandbox Efecto
Valor predeterminado (eliminación estándar) verdadero o se omite falso u omitido Los registros pasan por la canalización estándar. Los registros eliminados se almacenan en la papelera de reciclaje si ésta está habilitada.
Omitir papelera de reciclaje false falso u omitido Los registros pasan por la canalización estándar. Se omite la papelera de reciclaje para este trabajo.
Eliminación rápida de espacio aislado false verdadero Elude la línea de procesamiento del SDK y la papelera de reciclaje. Rendimiento máximo.

Control del comportamiento de la papelera de reciclaje

De forma predeterminada, cuando la papelera de reciclaje está habilitada para su entorno, todos los registros eliminados por un trabajo de eliminación masiva se almacenan en la papelera de reciclaje antes de la eliminación. La papelera de reciclaje permite a los administradores recuperar registros eliminados accidentalmente, pero agrega una sobrecarga significativa de entrada/salida para cada registro eliminado. Para deshabilitar la papelera de reciclaje de un trabajo de eliminación masiva, establezca CanRecoverDeletedRecords a false en el parámetro Options. Esta configuración puede duplicar aproximadamente el rendimiento de eliminación eliminando la sobrecarga de:

  • Creación de registros DeletedItemReference
  • Copia de datos de registros en tablas de almacenamiento de la papelera de reciclaje
  • Actualización de blobs de datos de restauración para cada registro eliminado

Warning

Cuando CanRecoverDeletedRecords se establece en false, los registros eliminados se quitan permanentemente y no se pueden recuperar de la papelera de reciclaje. Esta acción es irreversible. Asegúrese de comprobar los criterios de consulta y de tener las copias de seguridad adecuadas antes de ejecutar un trabajo de eliminación masiva con esta opción. Esta configuración solo afecta a la tarea de eliminación masiva actual; no cambia la configuración de la papelera de reciclaje del nivel de entorno.

Ejemplo: Deshabilitar la papelera de reciclaje para una eliminación más rápida

Elimine permanentemente los registros sin almacenarlos en la papelera de reciclaje.

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

Eliminación rápida del Sandbox

En escenarios que requieren una capacidad máxima de eliminación, puede habilitar el modo de eliminación rápida de la zona de pruebas al configurar RunJobForSandbox a true. En este modo, el trabajo de eliminación masiva omite completamente la canalización del SDK estándar y utiliza un mecanismo de eliminación en cascada directa, incrementando el rendimiento.

Cuando se habilita la eliminación rápida en la sandbox, se omiten los siguientes elementos:

  • Ejecución del complemento de preoperación y posterior a la operación
  • Desencadenadores de flujo de trabajo sincrónicos y asincrónicos
  • Almacenamiento de la papelera de reciclaje (los registros se eliminan permanentemente)
  • Lógica empresarial personalizada registrada en el mensaje de eliminación

Se conservan los siguientes elementos al realizar una eliminación rápida:

  • Reglas de eliminación en cascada basadas en la configuración de la relación de tablas
  • Integridad referencial (relaciones de clave externa)
  • Comprobaciones de privilegios de seguridad
  • Sincronización del seguimiento de cambios para la replicación descendente

Importante

El modo de eliminación rápida del espacio aislado omite toda la canalización del complemento del SDK. Los complementos, flujos de trabajo o lógica de negocios personalizados registrados en el mensaje Eliminar no se ejecutan para los registros eliminados en este modo. Se incluyen complementos de auditoría, complementos de integración y cualquier lógica de validación personalizada. Además, los registros eliminados en modo sandbox no se pueden recuperar de la papelera de reciclaje. Use esta opción solo cuando esté seguro de que ninguna lógica empresarial crítica depende de la ejecución del complemento en tiempo de eliminación y de que la eliminación permanente e irrecuperable sea aceptable.

Ejemplo: Eliminación rápida de Sandbox

Obtenga información sobre cómo usar el modo de eliminación de espacio aislado de alto rendimiento para obtener el máximo rendimiento.

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

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.

Establezca la propiedad QueryExpressionDataSource en retained en una acción BulkDelete de API web para indicar que la consulta es solo para filas retenidas.

Solicitud:

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": []
}

Respuesta:

HTTP/1.1 200 OK
{
    "@odata.context": "[Organization Uri]/api/data/v9.1/$metadata#Microsoft.Dynamics.CRM.BulkDeleteResponse",
    "JobId": "3093d67f-21f0-ed11-8b48-6045bdd92a32"
}

Obtenga más información sobre las acciones de API web.

Samples

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

Consulte también