Mensaje de error cuando se elimina un registro en Microsoft Dynamics CRM: "Error: el servicio de eliminación no pudo limpiar algunas tablas"


Síntomas


Cuando se elimina un registro en Microsoft Dynamics CRM, puede anotarse el siguiente mensaje de error en el registro de aplicación:
Tipo de suceso: Error
Origen del evento: MSCRMDeletionService
Categoría del suceso: ninguna

Id. de suceso: 16387
Fecha: fecha
Tiempo: hora
Soy usuario: N/D

Equipo: nombre_equipo
Descripción:
Error: El servicio de eliminación no se pudo limpiar algunas tablas.

Causa


Este problema se produce porque existe una restricción en la tabla de entidades de registro que se va a eliminar. Además, el usuario que elimina el registro no tenga los derechos para eliminar todos los registros asociados.

Por ejemplo, supongamos que dispone de derechos para eliminar sólo los contactos. Intenta eliminar un contacto que está asociado con los tres casos. En Microsoft Dynamics CRM, la relación en cascada entre la entidad contacto y el caso se establece en "Eliminación en cascada todos." Por lo tanto, se establece el registro de contacto en un estado de eliminación en la base de datos de Microsoft Dynamics CRM. Sin embargo, no tiene derechos para eliminar los casos. Por lo tanto, no se establece el estado de eliminación en los registros de casos. Cuando el servicio de eliminación intenta eliminar el registro de contacto, una restricción bloquea esa eliminación porque hay tres casos existentes que están asignados al contacto. Para eliminar correctamente este registro, debe eliminar los registros que provocan el conflicto de restricción.

Solución


Para resolver este problema, siga estos pasos.

Nota: Antes de seguir las instrucciones de este artículo, asegúrese de que tiene una copia de seguridad completa de la base de datos que pueda restaurar si surge algún problema.

Para identificar la tabla donde falla el servicio de eliminación, siga estos pasos:
  1. En el servidor de Microsoft Dynamics CRM, haga clic en Inicio, haga clic en
    Ejecutar, escriba cmdy, a continuación, haga clic en
    OK.
  2. En el símbolo del sistema, escriba crmdeletionservice.exe – runonce de directorioy, a continuación, presione ENTRAR.

    Nota: De forma predeterminada, el archivo Crmdeletionservice.exe se encuentra en la unidad: \program files\Microsoft Dynamics CRM\server\bin directorio.

    A continuación, recibirá un mensaje similar al siguiente:
    No se puede limpiar las tablas siguientes: campaña
    Nota: La tabla que se devuelve en el mensaje es la tabla para que el servicio de eliminación no pudo.
En el ejemplo siguiente se muestra cómo resolver este problema para la tabla de campaña.

Para resolver el problema de la tabla de campaña, siga estos pasos:
  1. Ejecutar una instrucción en el analizador de consultas SQL. Para ello, siga estos pasos:
    1. Haga clic en Inicio, seleccione Todos los programas, seleccione Microsoft SQL Servery, a continuación, haga clic en Analizador de consultas.
    2. Ejecute la siguiente consulta en el
      Nombre de la organizaciónla base de datos _MSCRM.

      Nota: NombreDeOrganización es un marcador de posición para el nombre de la organización real.
      delete from Campaign where DeletionStateCode = 2
      Esta consulta devuelve un mensaje similar al siguiente:
      Elimine la instrucción entra en conflicto con la restricción COLUMN REFERENCE 'campaign_leads'. Se produjo el conflicto'NombreDeOrganización_MSCRM', tabla 'LeadBase', 'CampaignId' de la columna de la base de datos. Se terminó la instrucción.
  2. Corregir los registros que están produciendo el conflicto de restricción mediante una instrucción similar a la siguiente instrucción.
    Update LeadBase set CampaignId=null WHERE CampaignId IN (SELECT CampaignId FROM CampaignBase WHERE DeletionStateCode = 2)
    Nota: El mensaje que recibió en el paso 1b anteriormente en esta sección dependen de la tabla y los campos que se utilizan en la instrucción. En este ejemplo, se establece el campo CampaignId en la tabla LeadBase en null si la campaña se ha marcado para su eliminación.
  3. Ejecute el siguiente comando para comprobar que se han corregido todas las tablas.
    crmdeletionservice.exe –runonce 
    Si sigue experimentando un problema, repita los pasos 1 a 3 anteriormente en esta sección para corregir las demás restricciones.