Simptomi
Kada ažurirate kolonu primarnog ključa tabele primarnog ključa u sistemu Microsoft SQL Server 2005 promenom vrednosti postojećih kolona ili tapaciranjem vrednosti kolona dobijate sledeću poruku o grešci:
Msg 547, nivo 16, stanje 0, red 1 Update izjava je neusaglašena sa referentnim ograničenjem "<Constraint>". Do neusaglašenosti je došlo u bazi podataka "><ime baze podataka ",<">tabela ", <" Ime>".
Na primer, do ovog problema dolazi u obe sledeće situacije.
Primer 1
-
Dve tabele se kreiraju korišćenjem uparivanja bez predmeta, kao što je SQL_Latin1_General_CP1_CI_AS uparivanja.
-
Između ove dve tabele pravite odnos primarnog ključa i stranog ključa.
-
Kolonu primarnog ključa tabele primarnog ključa ažurirate promenom vrednosti postojećih kolona.
Primer 2
-
Kreirate dve tabele.
-
Između ove dve tabele pravite odnos primarnog ključa i stranog ključa.
-
Postavka ANSI_PADDING je podešena na OFF.Napomena Podrazumevano, ANSI_PADDING je podešena na OFF.
-
Kolonu primarnog ključa tabele primarnog ključa ažurirate tapaciranjem vrednosti kolona.
Uzrok
Do ovog problema dolazi zato što vrednosti koje su jednake na nivou tipa mogu biti različite na binarnom nivou. Na primer, na nivou tipa, N'a' je jednak N'A'. Međutim, na binarnom nivou, N'a' nije jednak N'A'. Mehanizam optimizacije netačno pretpostavlja da operacija ažuriranja koja menja predmet ne unosi nikakve stvarne promene. Zbog toga je PK-FK provera neuspešna.
Rešenje
Informacije o servisnom paketu
Da biste rešili ovaj problem, nabavite najnoviji servisni paket za SQL Server 2005. Za više informacija kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:
913089 Nabavljanje najnovijeg servisnog paketa za SQL Server 2005
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na". Ovaj problem je prvi put ispravljen u SQL Server 2005 servisnom paketu 3.
Više informacija
Za više informacija o terminologiji softverskih ispravki kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:
824684 Opis standardne terminologije koja se koristi za opisivanje Microsoft softverskih ispravki