Symptomen

Stel dat u probeert om gegevens te verwijderen uit een tabel en de gegevens waarnaar wordt verwezen in andere tabellen in Microsoft SQL Server 2016 en 2017. If u query verkennen uitvoeringsplan, ziet u het gebruik van een operator verwijzing refererende sleutel controleren .In dit geval wordt een volgende foutbericht zelfs als de rij wordt verwijderd wordt niet verwezen in andere tabellen:

Msg 547, niveau 16, staat 0, lijn LineNumber

De instructie DELETE conflict met de beperking

Status

Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.

Oplossing

Dit probleem is opgelost in de volgende cumulatieve update voor SQL Server:

Opmerking Dit probleem is verholpen in de cumulatieve Update 6 voor SQL Server 2016 SP2.

Over cumulatieve updates voor SQL Server:

Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en alle beveiligingscorrecties die zijn opgenomen in de vorige cumulatieve update. Bekijk de meest recente cumulatieve updates voor SQL Server:

Workaround

Om dit probleem te omzeilen, kunt u een van de volgende methoden gebruiken:

  • Gebruik het compatibiliteitsniveau onder 130 deze query uit te voeren.

  • De indexstructuur van de op de refererende tabel wijzigen.

Meer informatie

Eerste database binnen het bereik van het compatibiliteitsniveau configuratie 130 in SQL Server 2016, het uitvoeringsplan van een query kunt refererende sleutel verwijzing Controleer de operator om te controleren of als een rij in een tabel wordt verwezen door de rijen in een andere tabellen met beperkingen voor referentiële integriteit. Deze operator kan worden gebruikt als een tabel wordt verwezen door een groot aantal externe tabellen. In deze operator, SQL Server kiest een index in de refererende tabel dergelijke controle moet worden uitgevoerd. Als een refererende tabel heeft een index met meerdere sleutelkolommen die sommige kolommen aan het begin uitmaken geen deel van de refererende sleutel, maar een ander kolommen maken deel uit van de refererende sleutel. Dit kan resulteren in onjuiste controle die wordt uitgevoerd door SQL Server.

Neem bijvoorbeeld het volgende schema:

tabel tpk (pk int-beperking maken de primaire sleutel cpk geclusterd)

tabel tfk (een int, fk int maken beperking cfk verwijzingen van refererende sleutels tpk, index ia clustered(a,fk))

Dit schema kan leiden tot dit probleem, maar als u volgorde van kolommen in de ia te indexeren (fk, een), wordt de toegang geweigerd.

Verwijzingen

Informatie over de  terminologiedat Microsoft gebruikt om softwareupdates te beschrijven.

Meer hulp nodig?

Uw vaardigheden uitbreiden
Training verkennen
Als eerste nieuwe functies krijgen
Deelnemen aan Microsoft insiders

Was deze informatie nuttig?

Hoe tevreden bent u met de taalkwaliteit?
Wat heeft uw ervaring beïnvloed?

Bedankt voor uw feedback.

×