Simptomi
Pretpostavimo da pokušate izbrisati podatke iz tablice, a koji se spominje u drugim tablicama u Microsoft SQL Server 2016 i 2017. If Istraži upita Izvršni plan, možete ga vidjeti koristite operator stranoj referenca ključ provjerite .U tom slučaju možete primiti sljedeću poruku o pogrešci čak i ako se redak izbrisan je referenciran u drugim tablicama:
Poruka 547, 16 razinu, stanje 0, redak LineNumber
Naredba DELETE u sukobu je sa ograničenje REFERENCE
Status
Microsoft je potvrdio da se taj problem pojavljuje u Microsoftovim proizvodima navedenima u odjeljku "Odnosi se na".
Rješenje
Problem je riješen u sljedećim kumulativnim ažuriranjem za SQL Server:
Napomena Problem je riješen u kumulativnu 6 Update za SQL Server 2016 SP2.
O kumulativna ažuriranja za SQL Server:
Svaki novi kumulativnim ažuriranjem za SQL Server sadrži sve hitnih popravaka i sve sigurnost rješava koji su obuhvaćeni s prethodnim kumulativnim ažuriranjem. Odjava najnovija kumulativna ažuriranja za SQL Server:
Zaobilazno rješenje
Problem se zaobilazno može riješiti na sljedeće načine:
-
Koristite razinu kompatibilnosti ispod 130 za izvođenje ovog upita.
-
Promijeniti strukturu indeks na referentni tablice.
Dodatne informacije
Početni baze podataka u dosegu razinu kompatibilnosti konfiguracije 130 u SQL Server 2016 plana izvršavanja upita možete koristiti Reference vanjski ključ Provjerite operator provjeriti ako redak u tablici referencira sve retke u drugi Tablica kroz ograničenja referencijalni integritet. Takve operator se može koristiti ako velik broj stranih tablicama se referiraju tablice. U ovaj operator SQL Server odluči indeks u svakoj tablici referentni za izvršavanje takvih potvrdite. Ako Referentni tablica ima indeks s više stupaca ključa takve neke Stupci na početku nisu dio vanjski ključ, ali neki drugi Stupci su dio vanjski ključ. To može rezultirati neispravna potvrdni se provodi SQL poslužitelj.
Na primjer, razmotrite Sljedeća shema:
Stvaranje tablice tpk (pk int ograničenja Klasterirani cpk primarni ključ)
Stvaranje tablice tfk (int, fk int ograničenja vanjskog ključa reference tpk cfk, clustered(a,fk)) ia indeksa
Taj problem, ali ako promijenite može rezultirati takva shema Redoslijed stupaca u indeks ia za (fk, u), će nije.
Reference
Naučite u terminologijaMicrosoft koristi za opisivanje softverskih ažuriranja.