Se connecter avec Microsoft
S'identifier ou créer un compte.
Bonjour,
Sélectionnez un autre compte.
Vous avez plusieurs comptes
Choisissez le compte avec lequel vous voulez vous connecter.

Symptômes

Supposons que vous essayez de supprimer des données d’une table, et les données sont référencées dans d’autres tables dans Microsoft SQL Server 2016 et 2017. If vous explorez la requête plan d’exécution, vous pouvez le voir utiliser un opérateur de référence de clé étrangère vérifier .Dans ce cas, vous pouvez recevoir un message d’erreur suivant même si la ligne en cours supprimé n’est pas référencé dans d’autres tables :

Msg 547, niveau 16, état 0, ligne LineNumber

L’instruction DELETE est en conflit avec la contrainte de référence

Statut

Microsoft a confirmé l’existence de ce problème dans les produits Microsoft répertoriés dans la section « S’applique à ».

Résolution

Ce problème est résolu dans la mise à jour cumulative suivante pour SQL Server :

Remarque : Ce problème est résolu dans les 6 mise à jour Cumulative pour le Service Pack 2 de SQL Server 2016.

À propos des mises à jour cumulatives pour SQL Server :

Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs logiciels et de sécurité inclus dans la mise à jour cumulative précédente. Découvrez les dernières mises à jour cumulatives pour SQL Server :

Solution de contournement

Pour contourner ce problème, appliquez l'une des méthodes suivantes :

  • Utilisez le niveau de compatibilité inférieur à 130 pour exécuter cette requête.

  • Modifier la structure d’index sur la table de référence.

Informations supplémentaires

Démarrage de la base de données étendue au niveau de compatibilité de configuration 130 dans SQL Server 2016, un plan d’exécution peut utiliser la référence de clé étrangère Opérateur de vérification pour vérifier si une ligne d’un tableau est référencée par aucune ligne dans d’autres tables par le biais de contraintes d’intégrité référentielle. Ce type d’opérateur peut être utilisée si une table est référencée par un grand nombre de tables externes. Dans cet opérateur, SQL Server choisit un index de chaque table de référence pour effectuer la vérification de ce type. If une table de référencement a un index comportant plusieurs colonnes clés, telles que certaines colonnes au début ne font pas partie de la clé étrangère, mais une autre colonnes font partie de la clé étrangère. Cela peut entraîner une vérification incorrecte effectuée par de SQL Server.

Par exemple, considérons le schéma suivant :

créer la table tpk (pk int contrainte cpk clé primaire en clusters)

créer la table tfk (int, int de fk tpk de clé étrangère contrainte cfk, index ia clustered(a,fk))

Ce schéma peut entraîner ce problème, mais si vous modifiez ordre des colonnes dans l’index ia (fk, un), il ne l’est pas.

Références

En savoir plus sur les  terminologieque Microsoft utilise pour décrire les mises à jour logicielles.

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.

Les communautés vous permettent de poser des questions et d'y répondre, de donner vos commentaires et de bénéficier de l'avis d'experts aux connaissances approfondies.

Ces informations vous ont-elles été utiles ?

Dans quelle mesure êtes-vous satisfait(e) de la qualité de la langue ?
Qu’est-ce qui a affecté votre expérience ?
En cliquant sur Envoyer, vos commentaires seront utilisés pour améliorer les produits et services de Microsoft. Votre administrateur informatique sera en mesure de collecter ces données. Déclaration de confidentialité.

Nous vous remercions de vos commentaires.

×