Prijavite se pomoću Microsoft naloga
Prijavite se ili kreirajte nalog.
Zdravo,
Izaberite drugi nalog.
Imate više naloga
Odaberite nalog pomoću kojeg želite da se prijavite.

Simptomi

Kada koristite funkcije SCOPE_IDENTITY() ili @@IDENTITYza preuzimanje vrednosti umetnutih u kolonu identiteta, možda ćete primetiti da ove funkcije ponekad daju netačne vrednosti. Do problema dolazi samo kada upiti koriste paralelne planove izvršavanja. Više informacija o tome kako da utvrdite da li će upiti koristiti paralelne planove izvršavanja potražite u odeljku Intra-query paralelism u sledećem tehničkom članku o Preuzimanju korporacije Microsoft:

Uzrok

Microsoft je potvrdio da je u tome problem u Microsoft proizvodima koji su navedeni na početku ovog članka.

Rezolucija

Kumulativne informacije o ažuriranju

SQL Server 2008 R2 servisni paket 1

Rešenje ovog problema je prvo objavljeno u kumulativnoj ispravki 5 za SQL Server 2008 R2 servisni paket 1. Više informacija o tome kako da nabavite ovaj kumulativni paket ispravki potražite u sledećem broju članka da biste prikazali članak u Microsoft bazi znanja: 

2659694Kumulativna ispravka paketa 5 za SQL Server 2008 R2 servisni paket 1

Napomišite 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 za SQL Server 2008 R2. Preporučujemo da razmotrite primenu najnovijeg izdanja popravke koje sadrži ovu hitnu ispravku. Da biste dobili više informacija, kliknite na sledeći broj članka da biste prikazali članak u Microsoft bazi znanja:

2567616Restrukcije SQL Server 2008 R2 objavljene su nakon objave sistema SQL Server 2008 R2 Service Pack 1

Zaokrenite posao

Microsoft preporučuje da ne koristite bilo koju od ovih funkcija u upitima kada su paralelni planovi uključeni jer nisu uvek pouzdani. Umesto toga koristite odredbu OUTPUT izraza INSERT da biste preuzeli vrednost identiteta kao što je prikazano u primeru ispod.

Primer korišćenja odredbe OUTPUT:

DECLARE @MyNewIdentityValues tabela(int mojevrednosti)
declare @A table (ID int primary key)
insert into @A values (1)
declare @B table (ID int primary key identity(1,1), B int not null)
insert into @B values (1)
izaberite stavku
    [Broj Redova] = @@RowCount,
    [@@IDENTITY] = @@IDENTITY,
    [SCOPE_IDENTITY] = SCOPE_IDENTITY()

set statistics profile on
insert into _ddr_T
izlazne inserted.ID u @MyNewIdentityValues
    izaberite stavku
            
b.ID         iz @A a
            levi spoj @B b na b.ID = 1
            left join @B b2 on b2. B = -1

            levi spoj _ddr_T t na t.T = -1

        gde ne postoji (izaberite * iz _ddr_T t2 gde t2.ID = -1)
set statistics profile off

izaberite stavku
    [Broj Redova] = @@RowCount,
    [@@IDENTITY] = @@IDENTITY,
    [SCOPE_IDENTITY] = SCOPE_IDENTITY(),
    [IDENT_CURRENT] = IDENT_CURRENT('_ddr_T')
izaberite * iz @MyNewIdentityValues
idi

Ako vaša situacija zahteva da koristite bilo koju od ovih funkcija, možete da koristite jedan od sledećih metoda da biste rešili problem.

1. metod:

Uključite sledeću opciju u upit

OPTION (MAXDOP 1)

Napomi:Ovo može da škodi performansama SELECT dela upita.

2. metod:

Pročitajte vrednost iz SELECT dela u skup promenljivih (ili promenljive jedne tabele) i umetnite u ciljnu tabelu sa MAXDOP=1. Pošto PLAN INSERT neće biti paralelno, dobijate pravu semantiku, ali SELECT će biti paralelno da biste postigli željene performanse.

3. metod:

Pokrenite sledeću izjavu da biste maksimalni stepen paralelism opcije postavili na 1:

sp_configure "maksimalni stepen paralelisma", 1

idi

ponovo konfigurisanje sa zamenom

idi

Napom:Ovaj metod može da izazove poništenje performansi na serveru. Ovaj metod ne bi trebalo da koristite osim ako ga niste procenjili u testiranju ili okruženju.

Više informacija

Microsoft Connect buba za ovaj problemhttps://docs.microsoft.com/en-us/collaborate/connect-redirect

Max degree of Parallelism (MAXDOP)

Da li vam je potrebna dodatna pomoć?

Želite još opcija?

Istražite pogodnosti pretplate, pregledajte kurseve za obuku, saznajte kako da obezbedite uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na pitanja, dajete povratne informacije i čujete mišljenje od stručnjaka sa bogatim znanjem.

Da li su vam ove informacije koristile?

Koliko ste zadovoljni kvalitetom jezika?
Šta je uticalo na vaše iskustvo?
Kada kliknete na dugme Prosledi“, vaše povratne informacije će se koristiti za poboljšanje Microsoft proizvoda i usluga. Vaš IT administrator će moći da prikupi ove podatke. Izjava o privatnosti.

Hvala vam na povratnim informacijama!

×