Přihlásit se pomocí účtu Microsoft
Přihlaste se nebo si vytvořte účet.
Dobrý den,
Vyberte jiný účet.
Máte více účtů.
Zvolte účet, pomocí kterého se chcete přihlásit.

Příznaky

Pokud k načtení hodnot vkládaných do sloupce identity SCOPE_IDENTITY() nebo @@IDENTITY funkce, můžete si všimnout, že tyto funkce někdy vracejí nesprávné hodnoty. K problému dochází jenom v případě, že dotazy používají plány paralelního spuštění. Další informace o tom, jak zjistit, jestli vaše dotazy budou používat plány paralelního spuštění, najdete v části Paralelnost v rámci dotazu v následujícím technickém článku o stažení microsoftu:

Příčina

Společnost Microsoft potvrdila, že se jedná o problém v produktech společnosti Microsoft, které jsou uvedené na začátku tohoto článku.

Řešení

Informace o kumulativní aktualizaci

SQL Server 2008 R2 Service Pack 1

Oprava tohoto problému byla poprvé vydána v kumulativní aktualizaci 5 pro SQL Server 2008 R2 Service Pack 1. Další informace o tom, jak získat tento balíček kumulativní aktualizace, najdete v následujícím článku znalostní báze Microsoft Knowledge Base: 

2659694Balíček kumulativní aktualizace 5 pro SQL Server 2008 R2 Service Pack 1

PoznámkaVzhledem k tomu, že buildy jsou kumulativní, každá nová verze opravy obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozího SQL Serveru 2008 R2, opravují verzi. Doporučujeme zvážit použití nejnovější verze opravy, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:

2567616Buildy SQL Serveru 2008 R2 vydané po vydání SQL Serveru 2008 R2 Service Pack 1

Alternativní řešení

Společnost Microsoft doporučuje, abyste v dotazech nepou ít žádné z těchto funkcí, pokud jsou zapojené paralelní plány, protože nejsou vždy spolehlivé. Místo toho použijte klauzuli OUTPUT příkazu INSERT k načtení hodnoty identity, jak je znázorněno v následujícím příkladu.

Příklad použití klauzule OUTPUT:

DECLARE @MyNewIdentityValues table(myidvalues int)
declare @A table (ID int primary key)
vložení do @A hodnot (1)
declare @B table (ID int primary key identity(1;1), B int not null)
vložení do @B hodnot (1)
vyberte
    [RowCount] = @@RowCount;
    [@@IDENTITY] = @@IDENTITY;
    [SCOPE_IDENTITY] = SCOPE_IDENTITY()

nastavit profil statistiky na
vložení do _ddr_T
výstupní inserted.ID do @MyNewIdentityValues
    vyberte
            
b.ID         z @A a
            Left join @B b on b.ID = 1
            left join @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)
vypnutí statistického profilu

vyberte
    [RowCount] = @@RowCount;
    [@@IDENTITY] = @@IDENTITY;
    [SCOPE_IDENTITY] = SCOPE_IDENTITY(),
    [IDENT_CURRENT] = IDENT_CURRENT('_ddr_T')
vyberte * z @MyNewIdentityValues
přejít

Pokud vaše situace vyžaduje, abyste některou z těchto funkcí potřebovali použít, můžete tento problém vyřešit jedním z následujících způsobů.

Metoda 1:

Zahrnutí následující možnosti do dotazu

OPTION (MAXDOP 1)

Poznámka:Může to zranit výkon části dotazu SELECT.

Způsob 2:

Přečtěte si hodnotu z části SELECT do sady proměnných (nebo jedné proměnné tabulky) a potom vložte do cílové tabulky s hodnotou MAXDOP=1. Vzhledem k tomu, že plán INSERT nebude rovnoběžný, získáte správnou sémantiku, ale váš select bude rovnoběžný, aby dosáhl požadovaného výkonu.

Metoda 3:

Spuštěním následujícího příkazu nastavte maximální stupeň rovnoběžnosti na hodnotu 1:

sp_configure "maximální stupeň rovnoběžnosti", 1

přejít

překonfigurovat s přepsáním

přejít

Poznámka:Tato metoda může způsobit snížení výkonu na serveru. Tuto metodu byste neměli používat, pokud jste ji nevyhodnotili v testovacím nebo pracovním prostředí.

Další informace

Chyba Microsoft Connect v tomtohttps://docs.microsoft.com/en-us/collaborate/connect-redirect

Max Degree of Parallelism (MAXDOP)

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.

Komunity vám pomohou klást otázky a odpovídat na ně, poskytovat zpětnou vazbu a vyslechnout odborníky s bohatými znalostmi.

Byly tyto informace užitečné?

Jak jste spokojeni s kvalitou jazyka?
Co ovlivnilo váš názor?
Po stisknutí tlačítka pro odeslání se vaše zpětná vazba použije k vylepšování produktů a služeb Microsoftu. Váš správce IT bude moci tato data shromažďovat. Prohlášení o zásadách ochrany osobních údajů.

Děkujeme vám za zpětnou vazbu.

×