KB2628712 - Ispravka: Beskonačna petlja se dešava u hijerarhiji koja sadrži cirkularnu relaciju u SQL Server 2008 R2

Microsoft distribuira Ispravke za Microsoft SQL Server 2008 R2 kao jednu datoteku koja se može preuzeti. Pošto su ispravke kumulativne, svako novo izdanje sadrži sve hitne ispravke i sve bezbednosne ispravke koje su uključene u prethodno izdanje SQL Server 2008 R2 ispravke.

Simptomi

Razmotrite sledeći scenario:

  • Imate Master Data Services (MDS) model i entitet koji ima atribut zasnovan na domenu u sistemu Microsoft SQL Server 2008 R2. Atribut zasnovan na domenu je dizajniran tako da se samostalno odnosi na isti atribut. Na primer, imate entitet zaposlenog koji ima atribut ManagerName. Atribut ManagerName odnosi se na isti entitet zaposlenog.Napomena Menadžer je takođe neka vrsta zaposlenog.

  • Postoji izvedena hijerarhija koja je definisana na atributu da bi se prikazao ponovni nadređeni/podređeni odnos za atribut zasnovan na domenu.

  • Učitavate vrednosti podataka koje sadrže jednu ili više cirkularnih referenci na MDS pripremnu tabelu. Ovo ponašanje izaziva cirkularnu referencu, a prvi oglas u atributu nije deo kruga. Na primer, sledeći obrazac podataka prikazuje cirkularnu referencu. Međutim, vrednost člana člana1 nije deo kruga:

    Member1 --manager attribute--> Member2 --manager attribute--> Member3 --manager attribute--> Member2 --manager attribute--> Member3

    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].[ udpStagingSweep] procedura korišćenjem potrebnih parametara za obradu isceniranih podataka.

    • Kliknite na dugme "Upravljanje integracijom" da biste posetili matičnu stranicu MDS Veb lokacije. Na stranici "Uvoz izvoza", u zaglavlju odeljka "Nebatched Staging Records" kliknite na ikonu zupčanika da biste obradili zapise za određeni model i verziju.

U ovom scenariju, proces pozadine tokom procesa pripreme može naići na beskonačnu petlju kada proces pozadine interno pozove [mdm].[ udpMemberRecursiveCircularCheck] procedura.

Uzrok

Do ovog problema dolazi zato što udpStagingSweep i udpStagingMemberAttributeSave procedure pozivaju udpMemberRecursiveCircularCheck proceduru jednom za svaki red pripreme. Ovo ponašanje bi trebalo da proveri vrednost atributa zasnovanu na domenu i daje grešku ako red za pripremu dovodi do cirkularne reference zajedno sa postojećim podacima. Nakon provere svih redova pripreme, dobićete sledeće rezultate:

  • Primenjuju se redovi za pripremu bez grešaka.

  • Redovi sa greškama su zabeleženi kôdom greške.

Ako su uslovi opisani u odeljku "Simptomi" tačni, [mdm].[ udpMemberRecursiveCircularCheck] procedura se ponavlja na neodređeno vreme dok se ne iscrpe resursi servera ili ne dođe do vremenskog ispada.

Rešenje

Kumulativne informacije o ažuriranju

SQL Server 2008 R2 servisni paket 1

Ispravka za ovaj problem je prvi put objavljena u kumulativnoj ispravci 4. Za više informacija o nabavljanju ovog paketa kumulativnih ispravki za SQL Server 2008 R2 SP1 kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

2633146 Kumulativni paket ispravki 4 za SQL Server 2008 R2 servisni paket 1Napomena Pošto su verzije kumulativne, svako novo izdanje ispravke sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodno izdanje ispravke za SQL Server 2008 R2 SP1. Preporučujemo da razmislite o primeni najnovijeg izdanja ispravke koje sadrži ovu hitnu ispravku. Za više informacija kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

2567616 SQL Server 2008 R2 builds that were released after SQL Server 2008 R2 Service Pack 1 was released

Status

Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".

Rešenje

Da biste rešili ovaj problem, upotrebite jedan od sledećih metoda:

  • Da biste sprečili problem, sledite ove korake:

    1. Ručno pregledajte vrednosti podataka člana koje se umeću u pripremnu tabelu pre nego što pokrenete proces pripreme.

    2. 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", sledite ove korake da biste ispravili problem:

    1. Identifikujte sesiju koja je pokrenuta u beskonačnoj petlji.

    2. Ubij sesiju da zaustaviš petlju.

    3. Izbrišite cirkularne referentne vrednosti iz pripremne tabele pre nego što se cirkularna referenca ponovo obradi.

Napomene

  • Da biste identifikovali sesiju za ubijanje, koristite jedan od sledećih metoda:

    • Koristite monitor aktivnosti u programu Microsoft SQL Server Management Studio.

    • Izaberite neku od sys.sysproces ili sys.dm_exec_requests dinamičkih prikaza upravljanja (DMV) da biste identifikovali sesije koje rade unutar MDS baze podataka u kojoj se CPU i vreme brzo uvećaju. Uverite se da se trenutni upit koji je pokrenut na 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" u svakom procesu na listi procesa nadgledanja aktivnosti.

    • Koristite jedan od sledećih parametara:

      • Komanda DBCC INPUTBUFFER (spid) zajedno sa ID-om sesije.

      • Funkcija SELECT * FROM sys.dm_exec_sql_text(sqlhandle) zajedno sa odgovarajućim parametrom SQL regulatora kada koristite DMV izlaz.

Reference

Za više informacija o otvaranju monitora aktivnosti u programu SQL Server Management Studio posetite sledeću MSDN Web lokaciju:

Otvaranje monitora aktivnosti u studiju za upravljanje sistemom SQL ServerZa više informacija o sintaksi KILL posetite sledeću MSDN Veb lokaciju:

Opšte informacije o sintaksi KILLZa više informacija o sys.dm_exec_requests DMV posetite sledeću MSDN Web lokaciju:

Opšte informacije o sys.dm_exec_requests DMV-uZa više informacija o sys.dm_exec_sql_text DMV posetite sledeću MSDN Web lokaciju:

Opšte informacije o sys.dm_exec_sql_text DMV-uZa više informacija o komandi DBCC INPUTBUFFER posetite sledeću MSDN Web lokaciju:

Opšte informacije o komandi DBCC INPUTBUFFERZa više informacija o postepenom modelu servisiranja za SQL Server kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

935897 Sql Server tim je dostupan u SQL Server timu za isporuku hitnih ispravki za prijavljene problemeZa više informacija o šemi imenovanja za ispravke sistema SQL Server kliknite na sledeći broj članka da biste videli članak u Microsoft bazi znanja:

822499 Nova šema imenovanja za pakete softverskih ispravki za Microsoft SQL ServerZa 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

Potrebna vam je dodatna pomoć?

Unapredite veštine
Istražite obuku
Prvi nabavite nove funkcije
Pridružite se Microsoft insajdere

Da li su vam ove informacije koristile?

Hvala vam na povratnim informacijama!

Hvala za povratne informacije! Izgleda da će biti od pomoći ako vas povežemo sa našim agentima Office podrške.

×