Simptomi
Kada ažurirate stupac primarni ključ u tablici primarni ključ u programu Microsoft SQL Server 2005 promjenom slučaja postojećih stupaca ili prema vrijednostima stupaca, prikazat će se sljedeća poruka o pogrešci:
MSG 547, razina 16, stanje 0, linija 1Ažuriranje izjava u sukobu s ograničenjima REFERENCE "<ograničenje>". Sukob se dogodio u bazi podataka "<naziv baze podataka>", tablica "<naziv tablice>", stupac '<naziv stupca>'.
Taj se problem, primjerice, pojavljuje u sljedećim situacijama.
Primjer 1
-
Možete stvarati dvije tablice pomoću usporedbe s neosjetljivim slovima, kao što su usporedba SQL_Latin1_General_CP1_CI_AS.
-
Između ove dvije tablice izgradite primarni ključ i odnos vanjskog ključa.
-
Stupac primarni ključ možete ažurirati pomoću tablice primarni ključ promjenom predmeta postojećih stupaca.
Primjer 2
-
Stvarate dvije tablice.
-
Između ove dvije tablice izgradite primarni ključ i odnos vanjskog ključa.
-
Postavka ANSI_PADDING postavljena je na Isključeno.Napomena Postavka ANSI_PADDING po zadanom je postavljena na Isključeno.
-
Stupac primarni ključ ažurirate u tablici primarni ključ tako da se vrijednosti stupaca ispune.
Uzrok
Taj se problem pojavljuje jer se vrijednosti koje su jednake na razini vrste mogu razlikovati na binarnoj razini. Na primjer, na razini vrsta, n ' a ' je jednak n ' a '. No, na binarnoj razini, n ' a ' nije jednaka n ' a '. Mehanizam za optimizaciju nepravilno pretpostavlja da postupak ažuriranja koji mijenja slučaj ne stvara stvarne promjene. Prema tome, provjera PK-FK nije uspješna.
Rješenje
Informacije o servisnom paketu
Da biste riješili taj problem, Nabavite najnoviji servisni paket za SQL Server 2005. Dodatne informacije potražite u članku iz Microsoftove baze znanja pod sljedećim brojem:
913089 Kako nabaviti najnoviji servisni paket za SQL Server 2005
Status
Microsoft je potvrdio da se radi o problemu u Microsoftovim proizvodima navedenim u odjeljku "odnosi se na". Taj je problem prvi put ispravljen u sustavu SQL Server 2005 Service Pack 3.
Dodatne informacije
Dodatne informacije o terminologiji za softversko ažuriranje potražite u članku iz Microsoftove baze znanja pod sljedećim brojem:
824684 Opis standardne terminologije koja se koristi za opisivanje ažuriranja Microsoftova softvera