Aanmelden met Microsoft
Meld u aan of maak een account.
Hallo,
Selecteer een ander account.
U hebt meerdere accounts
Kies het account waarmee u zich wilt aanmelden.

Symptomen

Wanneer u SCOPE_IDENTITY() of @@IDENTITYgebruikt om de waarden op te halen die in een identiteitskolom zijn ingevoegd, ziet u mogelijk dat deze functies soms onjuiste waarden retourneren. Het probleem treedt alleen op wanneer in uw query's parallelle uitvoeringsplannen worden gebruikt. Zie de sectie Intra-query parallelism in het volgende technische artikel over Microsoft Downloads voor meer informatie over het bepalen of uw query's parallelle uitvoeringsplannen gaan gebruiken:

Oorzaak

Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die aan het begin van dit artikel worden vermeld.

Oplossing

Cumulatieve updategegevens

SQL Server 2008 R2 Service Pack 1

De oplossing voor dit probleem is voor het eerst uitgebracht in Cumulatieve update 5 voor SQL Server 2008 R2 Service Pack 1. Klik op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base te bekijken voor meer informatie over het verkrijgen van dit cumulatieve updatepakket: 

2659694Cumulatief updatepakket 5 voor SQL Server 2008 R2 Service Pack 1

Opmerking Omdat de builds cumulatief zijn, bevat elke nieuwe fix-release alle hotfixes en alle beveiligingsfixes die zijn opgenomen in de vorige SQL Server 2008 R2-fix-release. U wordt aangeraden de meest recente fix-release met dit hotfix toe te passen. Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie:

2567616De SQL Server 2008 R2-builds die zijn uitgebracht nadat SQL Server 2008 R2 Service Pack 1 is uitgebracht

Workaround

Microsoft raadt u aan geen van deze functies in uw query's te gebruiken wanneer er parallelle abonnementen bij betrokken zijn omdat ze niet altijd betrouwbaar zijn. Gebruik in plaats daarvan de OUTPUT-component van insert-instructie om de identiteitswaarde op te halen, zoals wordt weergegeven in het onderstaande voorbeeld.

Voorbeeld van het gebruik van de OUTPUT-component:

DECLARE @MYNEWIDENTITYVALUES tabel(myidvalues int)
declaratie @A tabel (primaire id-int-sleutel)
invoegen in @A waarden (1)
declareer @B tabel (id int primary key identity(1,1), B int not null)
invoegen in @B waarden (1)
selecteren
    [Rijtelling] = @@RowCount,
    [@@IDENTITY] = @@IDENTITY,
    [SCOPE_IDENTITY] = SCOPE_IDENTITY()

statistiekenprofiel instellen op
invoegen in _ddr_T
uitvoer inserted.ID in @MyNewIdentityValues
    selecteren
            
b.ID         uit @A een
            left join @B b op b.ID = 1
            left join @B b2 on b2. B = -1

            left join _ddr_T t op t.T = -1

        where not exists (select * from _ddr_T t2 where t2.ID = -1)
statistiekenprofiel instellen

selecteren
    [Rijtelling] = @@RowCount,
    [@@IDENTITY] = @@IDENTITY,
    [SCOPE_IDENTITY] = SCOPE_IDENTITY(),
    [IDENT_CURRENT] = IDENT_CURRENT('_ddr_T')
selecteer * uit @MyNewIdentityValues
gaan

Als u in uw situatie een van deze functies moet gebruiken, kunt u een van de volgende methoden gebruiken om het probleem te voorkomen.

Methode 1:

De volgende optie in de query opnemen

OPTION (MAXDOP 1)

Opmerking:Dit kan de prestaties van een SELECT-deel van de query beïnvloeden.

Methode 2:

Lees de waarde van het onderdeel SELECT in een set variabelen (of één tabelvariabele) en voeg vervolgens in de doeltabel in met MAXDOP=1. Aangezien het INSERT-plan niet parallel zal zijn, krijgt u de juiste semantische semantiek, maar uw SELECT zal parallel zijn om de gewenste prestaties te bereiken.

Methode 3:

Voer de volgende instructie uit om de maximale mate van parallelisme in te stellen op 1:

sp_configure 'max degree of parallelism', 1

gaan

opnieuw configureren met overschrijven

gaan

Opmerking:Deze methode kan leiden tot prestatiedegradatie op de server. U moet deze methode alleen gebruiken als u deze hebt geëvalueerd in een test- of faseringsomgeving.

Meer informatie

Microsoft Connect-bug op dithttps://docs.microsoft.com/en-us/collaborate/connect-redirect

Max Degree of Parallelism (MAXDOP)

Meer hulp nodig?

Meer opties?

Verken abonnementsvoordelen, blader door trainingscursussen, leer hoe u uw apparaat kunt beveiligen en meer.

Community's helpen u vragen te stellen en te beantwoorden, feedback te geven en te leren van experts met uitgebreide kennis.

Was deze informatie nuttig?

Hoe tevreden bent u met de taalkwaliteit?
Wat heeft uw ervaring beïnvloed?
Als u op Verzenden klikt, wordt uw feedback gebruikt om producten en services van Microsoft te verbeteren. Uw IT-beheerder kan deze gegevens verzamelen. Privacyverklaring.

Hartelijk dank voor uw feedback.

×