Microsoft distribuira Microsoft SQL Server 2008 R2 popravke kao jednu datoteku koja se može preuzeti. Budući da su ispravke kumulativne, svako novo izdanje sadrži sve hitne ispravke i sve bezbednosne ispravke koje su uključene u prethodno izdanje popravke SQL Server 2008 R2.
Simptomi
Razmotrite sledeći scenario:
-
Imate Master Data Services (MDS) model i entitet koji imaju atribut zasnovan na domenu u programu Microsoft SQL Server 2008 R2. Atribut zasnovan na domenu dizajniran je tako da upućuje na isti atribut.Na primer, imate entitet Zaposleni koji ima atribut ManagerName. Atribut ManagerName se odnosi na isti entitet "Zaposleni".Napomena Menadžer je takođe vrsta zaposlenog.
-
Postoji izvedena hijerarhija koja je definisana u atributu da bi se prikazala rekurzivna relacija nadređeno/podređeno za atribut zasnovan na domenu.
-
Učitavate vrednosti podataka koje sadrže kružne reference u MDS pripremnu tabelu. Ovo ponašanje dovodi do cirkularne reference, a prvi čvor u atributu nije deo kruga.Na primer, sledeći obrazac podataka prikazuje kružnu referencu. Međutim, vrednost člana 1 nije deo kruga:
Član1 -- atribut menadžera --> Član2 -- atribut menadžera --> Član3 -- atribut menadžera--> Član2 --atribut menadžera--> Član3
insert into mdm.tblStgMemberAttribute(ModelName, EntityName, MemberType_ID, MemberCode, AttributeName, AttributeValue, Status_ID)Values ('EntityTest', 'ModelTest', 1, 'Member3', 'Manager', 'Member2', 0),('EntityTest', 'ModelTest', 1, 'Member2', 'Manager', 'Member3', 0),('EntityTest', 'ModelTest', 1, 'Member3', 'Manager', 'Member2', 0),('EntityTest', 'ModelTest', 1, 'Member2', 'Manager', 'Member1', 0)('EntityTest', 'ModelTest', 1, 'Member1', 'Manager', 'NULL', 0)
-
Koristite jedan od sledećih metoda za učitavanje vrednosti podataka u entitet pomoću MDS procesa pripreme:
-
Pokrenite Exec [mdm]. Procedura [udpStagingSweep] pomoću potrebnih parametara za obradu podataka po fazama.
-
Izaberite stavku Upravljanje integracijom da biste posetili matičnu stranicu MDS veb lokacije. Na stranici Uvoz izvoza, u okviru zaglavlja odeljka Zapisi bez podudaranja kliknite na ikonu zupčanika da biste obraditi zapise za određeni model i verziju.
-
U ovom scenariju, proces u pozadini tokom pripremnog procesa može naići na beskonačnu petlju kada proces u pozadini interno pozove [mdm]. Procedura [udpMemberRecursiveCircularCheck].
Izazvati
Do ovog problema dolazi zato što udpStagingSweep i udpStagingMemberAttributeSave procedure pozivaju proceduru udpMemberRecursiveCircularCheck jednom za svaki red pripreme. Ovo ponašanje bi trebalo da proveri vrednost atributa zasnovanu na domenu i vrati grešku ako red pripreme izazove cirkularnu referencu zajedno sa postojećim podacima. Kada se provere svi pripremni redovi, dobićete sledeće rezultate:
-
Primenjuju se redovi pripreme bez grešaka.
-
Pripremni redovi sa greškama su navedeni kodom greške.
Ako su uslovi opisani u odeljku "Simptomi" tačni, [mdm]. [udpMemberRecursiveCircularCheck] ponavlja se neodređeno dok se ne iscrpe resursi servera ili ne dođe do isteka vremenskog ograničenja.
Rešenje
Kumulativne informacije o ažuriranju
SQL Server 2008 R2 servisni paket 1
Rešenje ovog problema je prvo objavljeno u kumulativnom ažuriranju 4. Za više informacija o tome kako da nabavite ovaj paket kumulativnih ispravki za SQL Server 2008 R2 SP1, kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:
2633146 Paket kumulativnih ispravki 4 za SQL Server 2008 R2 servisni paket 1Note Pošto su verzije kumulativne, svako novo izdanje popravke sadrži sve hitne ispravke i sve bezbednosne ispravke koje su uključene u prethodno izdanje popravke SQL Server 2008 R2 SP1. Preporučujemo da razmotrite primenu najnovije ispravke koja sadrži ovu hitnu ispravku. Za više informacija kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:
2567616 Verzija SQL Server 2008 R2 objavljena nakon izdanja SQL Server 2008 R2 Service Pack 1
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".
Zaobilaženje problema
Da biste zaobišli ovaj problem, koristite jedan od sledećih metoda:
-
Da biste sprečili problem, pratite ove korake:
-
Ručno pregledajte vrednosti podataka članova koje se umeću u pripremnu tabelu pre nego što pokrenete pripremni proces.
-
Uverite se da sve vrednosti članova za bilo koje atribute zasnovane na domenu ne sadrže cirkularne reference opisane u odeljku "Simptomi"
-
-
Kada dođe do problema opisanog u odeljku "Simptomi", pratite ove korake da biste rešili problem:
-
Identifikujte sesiju koja je pokrenuta u beskonačnoj petlji.
-
Isključite sesiju da biste zaustavili ponavljanje.
-
Izbrišite kružne referentne vrednosti iz pripremne tabele pre nego što se cirkularna referenca ponovo obradi.
-
Beleške
-
Da biste identifikovali koju sesiju treba ubiti, koristite jedan od sledećih metoda:
-
Koristite monitor aktivnosti u programu Microsoft SQL Server Management Studio.
-
Izaberite neki od sys.sysprocesses ili sys.dm_exec_requests prikaza dinamičkog upravljanja (DMV) da biste identifikovali sesije koje rade unutar MDS baze podataka u kojima se CPU i vreme brzo povećaju. Uverite se da se trenutni upit koji je pokrenut u sesiji podudara sa imenima procedura koja su opisana u odeljku "Uzrok".
-
-
Da biste identifikovali trenutno pokrenutu proceduru za sesije, koristite jedan od sledećih metoda:
-
Kliknite desnim tasterom miša na meni Detalji na svakom procesu na listi procesa nadgledanja aktivnosti.
-
Koristite neki od sledećih parametara:
-
Komanda DBCC INPUTBUFFER (spid) zajedno sa ID-om sesije.
-
Funkcija SELECT * FROM sys.dm_exec_sql_text(sqlhandle) zajedno sa parametrom SQL regulatora koji se podudara kada koristite DMV izlaz.
-
-
Reference
Više informacija o tome kako da otvorite monitor aktivnosti u programu SQL Server Management Studio potražite na sledećoj MSDN veb lokaciji:
Kako da otvorite monitor aktivnosti u programu SQL Server Management StudioZa više informacija o KILL sintaksi posetite sledeću MSDN veb lokaciju:
Opšte informacije o KILL sintaksiViše informacija o funkciji sys.dm_exec_requests DMV potražite na sledećoj MSDN veb lokaciji:
Opšte informacije o sys.dm_exec_requests DMVViše informacija o funkciji sys.dm_exec_sql_text DMV potražite na sledećoj MSDN veb lokaciji:
Opšte informacije o sys.dm_exec_sql_text DMVZa više informacija o DBCC INPUTBUFFER komandi posetite sledeću MSDN veb lokaciju:
Opšte informacije o komandi DBCC INPUTBUFFERZa više informacija o modelu inkrementalnog servisiranja za SQL Server kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:
935897 Inkrementalni model servisiranja dostupan je SQL Server timu za isporuku hitnih ispravki za prijavljene problemeZa više informacija o šemi imenovanja za SQL Server ažuriranja kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:
822499 Nova šema imenovanje za Microsoft SQL Server pakete softverskih ispravkiZa više informacija o terminologiji ažuriranja softvera kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:
824684 Opis standardne terminologije koja se koristi za opisivanja Microsoft softverskih ispravki