Příznaky
Zvažte následující scénář:
-
Spustíte postup v Microsoft SQL serveru 2014 nebo SQL serveru 2012.
-
Procedura obsahuje dotaz s následujícími podmínkami:
-
Připojí tabulku, která se často aktualizuje.
-
Má klauzuli WHERE, která obsahuje parametry.
-
Používá možnost (RECOMPILE).
-
-
Tento postup se spustí u několika souběžných připojení, která mají různé sady hodnot parametrů.
-
Váš server je plně vytížený, což způsobuje, že každý z těchto postupů může trvat déle než obvykle.
V tomto scénáři může docházet k nesprávným výsledkům z procedury, která se spouští u vašeho připojení, pokud jsou v časovém intervalu, který nastane mezi ukončením kompilace dotazu a spuštěním dotazu při spuštění připojení, splněny následující podmínky:
-
Podmínka 1: jiné souběžné připojení provádí aktualizace spojené tabulky, které jsou dostatečně velké, aby mohla aktivační události vyvolat další rekompilaci dotazu.
-
Podmínka 2: stejný dotaz byl znovu zkompilován z jiného připojení a pak do mezipaměti.
Důležité Tento problém časování je mimořádně vzácné.
Příčina
K tomuto problému dochází, protože hodnoty parametrů dotazu se po spuštění dotazu na připojení změní na nesprávné hodnoty. K tomu dochází kvůli extrémně vzácnému načasování časování mezi souběžnými kompilacemi.
Řešení
Tento problém byl poprvé opraven následující kumulativní aktualizací SQL serveru.
Kumulativní aktualizace 4 pro SQL Server 2014 /en-us/help/2999197
Kumulativní aktualizace 2 pro SQL Server 2012 SP2 /en-us/help/2983175
Kumulativní aktualizace 11 pro SQL Server 2012 SP1 /en-us/help/2975396
Každá nová kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí kumulativní aktualizace. Podívejte se na nejnovější kumulativní aktualizace SQL serveru:
Stav
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.