Message d’erreur lorsque vous supprimez un enregistrement dans Microsoft Dynamics CRM : « erreur : échec du Service de suppression nettoyer des tables »


Symptômes


Lorsque vous supprimez un enregistrement dans Microsoft Dynamics CRM, le message d’erreur suivant peut être enregistré dans le journal d’Application :
Type d'événement : erreur
Source de l’événement : MSCRMDeletionService
Catégorie de l'événement : aucune

L’ID d’événement : 16387
Date : Date
Durée : temps
SUIS utilisateur : n/a

Ordinateur : nom_ordinateur
Description :
Erreur : Échec de Service de suppression nettoyer des tables.

Cause


Ce problème se produit car il existe une contrainte sur la table d’entité de l’enregistrement en cours de suppression. En outre, l’utilisateur qui supprime l’enregistrement peut-être pas les droits pour supprimer tous les enregistrements associés.

Par exemple, supposons que vous disposez des droits pour supprimer uniquement les contacts. Vous essayez de supprimer un contact qui est associé aux trois cas. Dans Microsoft Dynamics CRM de, la relation en cascade entre l’entité contact et l’entité incident a la valeur « Cascade Delete tous. » Par conséquent, l’enregistrement de contact a un état de la suppression dans la base de données Microsoft Dynamics CRM. Toutefois, vous n’avez pas de droits pour supprimer le cas. Par conséquent, l’état de la suppression n’est pas définie sur les enregistrements d’incidents. Lorsque le Service de suppression essaie de supprimer l’enregistrement de contact, une contrainte bloque cette suppression, car il existe trois cas existants qui sont affectés au contact. Pour supprimer cet enregistrement, vous devez supprimer les enregistrements qui provoquent le conflit de contrainte.

Résolution


Pour résoudre ce problème, procédez comme suit.

Remarque Avant de suivre les instructions fournies dans cet article, assurez-vous que vous disposez d’une copie de sauvegarde complète de la base de données que vous pouvez restaurer si un problème survient.

Pour identifier la table où le Service de suppression échoue, procédez comme suit :
  1. Sur le serveur Microsoft Dynamics CRM, cliquez sur Démarrer, cliquez sur
    Exécuter, tapez cmd, puis cliquez sur
    OK.
  2. À l’invite de commandes, tapez le répertoirecrmdeletionservice.exe – runonceet puis appuyez sur ENTRÉE.

    Remarque Par défaut, le fichier Crmdeletionservice.exe se trouve dans le lecteur: répertoire de Dynamics CRM\server\bin \program files\Microsoft.

    Puis, vous recevez un message similaire au message suivant :
    Impossible de nettoyer les tables suivantes : campagne
    Remarque La table qui est renvoyée dans le message est la table pour laquelle le Service de suppression a échoué.
L’exemple suivant montre comment résoudre ce problème pour la table campagne.

Pour résoudre le problème de la table de la campagne, procédez comme suit :
  1. Exécution d’une instruction dans l’Analyseur de requêtes SQL. Pour ce faire, procédez comme suit :
    1. Cliquez sur Démarrer, pointez sur Tous les programmes, pointez sur Microsoft SQL Server, puis cliquez sur Analyseur de requêtes.
    2. Exécutez la requête suivante sur la
      Base de données de Nom de l’organisation_MSCRM.

      Remarque : Nom_organisation est un espace réservé pour le nom de l’organisation réelle.
      delete from Campaign where DeletionStateCode = 2
      Cette requête renvoie un message similaire au message suivant :
      Supprimez l’instruction est en conflit avec la contrainte de référence de colonne 'campaign_leads'. Le conflit est survenu dans la base de données'Nom_organisation_MSCRM', table 'LeadBase', colonne 'identificateur ' de la campagne. L’instruction a été interrompue.
  2. Corriger les enregistrements qui sont à l’origine du conflit de contrainte à l’aide d’une instruction qui ressemble à l’instruction suivante.
    Update LeadBase set CampaignId=null WHERE CampaignId IN (SELECT CampaignId FROM CampaignBase WHERE DeletionStateCode = 2)
    Remarque Le message que vous avez reçu dans l’étape 1 b plus haut dans cette section dépendent de la table et les champs que vous utilisez dans l’instruction. Dans cet exemple, vous définissez le champ d’identificateur de la campagne dans la table LeadBase de la valeur null si la campagne a été marquée pour suppression.
  3. Exécutez la commande suivante pour vérifier que toutes les tables ont été corrigées.
    crmdeletionservice.exe –runonce 
    Si vous rencontrez toujours un problème, répétez les étapes 1 à 3, plus haut dans cette section pour corriger les autres contraintes.