Jelenségek

Ha a SCOPE_IDENTITY() vagy az @@IDENTITYfüggvény segítségével olvassa be az identitásoszlopba beszúrt értékeket, észreveheti, hogy ezek a függvények néha helytelen értékeket ad vissza. A probléma csak akkor jelentkezik, ha a lekérdezések párhuzamos végrehajtási terveket használnak. Ha többet meg szeretné tudni arról, hogy mi alapján állapítható meg, hogy a lekérdezések párhuzamos végrehajtási terveket fognak-e használni, olvassa el a Microsoft-letöltések alábbi technikai cikkének Lekérdezést párhuzamosság szakaszát:

A probléma oka

A Microsoft megerősítette, hogy a cikkben tárgyalt jelenség a cikk elején felsorolt termékek hibájára vezethető vissza. 

Megoldás

Kumulatív frissítéssel kapcsolatos információk

SQL Server 2008 R2 Service Pack 1

A hibajavítás először az SQL Server 2008 R2 Service Pack 1 szervizcsomag 5. összegző frissítésében jelent meg. A halmozott frissítési csomag beszerzéséről további információt a következő cikkszámra kattintva talál a Microsoft Tudásbázisban: 

2659694Kumulatív frissítéscsomag 5 for SQL Server 2008 R2 Service Pack 1

Megjegyzés:Mivel a buildek kumulatívak, minden egyes új javítás tartalmazza az SQL Server 2008 R2 korábbi kiadásában szereplő összes gyorsjavítást és biztonsági javítást. Javasoljuk, hogy alkalmazza a gyorsjavítást tartalmazó legújabb javítást. További információ a Microsoft Tudásbázis következő számú cikkében olvasható (a cikk megnyitásához kattintson a sorszámra):

2567616Az SQL Server 2008 R2 service pack 1 szervizcsomaggal kiadott SQL Server 2008 R2 buildek

Kerülő megoldás

A Microsoft azt javasolja, hogy ne használja ezeket a függvényeket a lekérdezésekben, ha párhuzamos tervek is vannak, mivel nem mindig megbízhatók. Ehelyett az INSERT utasítás OUTPUT záradékával olvassa be az identitásértéket az alábbi példában látható módon.

Példa a OUTPUT záradékra:

DECLARE @MyNewIdentityValues table(myidvalues int) tábla @A deklarál (id int primary key) insert into @A values (1) tábla @B deklarálható (id int primary key identity(1,1), B int not null) insert into @B values (1) válassza a     [SorSzám] = @@RowCount,     [@@IDENTITY] = @@IDENTITY,     [SCOPE_IDENTITY] = SCOPE_IDENTITY() set statistics profile on beszúrás _ddr_T kimenet inserted.ID a @MyNewIdentityValues     válassza a             b.ID         a @A             bal oldali @B b a b.ID = 1             bal oldali @B b2 on b2. B = -1             left join _ddr_T t on t.T = -1         where not exists (select * from _ddr_T t2 where t2.ID = -1) set statistics profile off válassza a     [SorSzám] = @@RowCount,     [@@IDENTITY] = @@IDENTITY,     [SCOPE_IDENTITY] = SCOPE_IDENTITY(),     [IDENT_CURRENT] = IDENT_CURRENT('_ddr_T') select * from @MyNewIdentityValues ugrás

Ha az Ön helyzete miatt e függvények bármelyikét használnia kell, az alábbi módszerek egyikével megkerülheti a problémát.

1. módszer:

Az alábbi lehetőségek használata a lekérdezésben

OPTION (MAXDOP 1)

Megjegyzés:Ez sértheti a lekérdezés SELECT részének teljesítményét.

2. módszer:

Olvassa fel a SELECT rész értékét egy változókészletbe (vagy egyetlen táblaváltozóba), majd szúrja be a céltáblába a MAXDOP=1 értékkel. Mivel az INSERT terv nem párhuzamos, a megfelelő szemantikus eredményt fogja kapni, a SELECT ugyanakkor párhuzamos lesz a kívánt teljesítmény eléréséhez.

3. módszer:

Az alábbi utasítás futtatásával állítsa a párhuzamosság maximális mértékét 1-re:

sp_configure "max degree of parallelism", 1

ugrás

újrakonfigurálás felülbírálással

ugrás

Megjegyzés:Ez a módszer teljesítményromlást okozhat a kiszolgálón. Csak akkor használja ezt a módszert, ha tesztelési vagy tesztkörnyezetben, vagy tesztkörnyezetben kiértékelték.

További információ

Microsoft Connect-hiba a probléma megoldásáhozhttps://docs.microsoft.com/en-us/collaborate/connect-redirect

Max Degree of Parallelism (MAXDOP)

További segítségre van szüksége?

További lehetőségeket szeretne?

Fedezze fel az előfizetés előnyeit, böngésszen az oktatóanyagok között, ismerje meg, hogyan teheti biztonságossá eszközét, és így tovább.

A közösségek segítségével kérdéseket tehet fel és válaszolhat meg, visszajelzést adhat, és részletes ismeretekkel rendelkező szakértőktől hallhat.