Vzťahuje sa na
SQL Server 2008 R2 SQL Server 2008

Microsoft distribuuje Microsoft SQL Server 2008 R2 opravy ako jeden súbor na stiahnutie. Pretože opravy sú kumulatívne, každé nové vydanie obsahuje všetky rýchlych opráv a všetky opravy zabezpečenia, ktoré boli zahrnuté do predchádzajúceho SQL servera 2008 R2 opraviť uvoľnenia.

Príznaky

Zoberme si nasledujúcu situáciu:

  • Aplikácia spustí dotaz, ktorý odkazuje na niektoré dočasné tabuľky v Microsoft SQL Server 2008 a v Microsoft SQL Server 2008 R2. Dočasné tabuľky sa v relácii vytvoria namiesto v uloženej procedúre.

  • Plán dotazu je uložený vo vyrovnávacej pamäti.

  • Viacerí používatelia používajú rovnaký dotaz v prostredí, ktoré je vysoko súčasné. Mnoho používateľov napríklad používa aplikáciu, ktorá spúšťa nasledujúci dotaz:

    create table #x (col1 int) go insert into #x values (1) go select * from #x where col1 = 1 go

V tomto scenári sa vyskytnú problémy s výkonom aplikácie.Poznámka: Ďalšie informácie o tom, ako identifikovať tento problém, nájdete v časti Ďalšie informácie.

Príčina

Tento problém sa vyskytuje, pretože rovnaký dotaz plány sa vložia do vyrovnávacej pamäte v rovnakom hash vedierko pre každého používateľa, keď je text dotazu rovnaký. Keď sa veľký počet plánov zhoduje s rovnakým segmentom (označuje sa aj ako reťazec hash), čas na vyhľadanie plánu vo vyrovnávacej pamäti sa výrazne zvýši a problémy s výkonom sa môžu vyskytnúť. Okrem toho môžu pracovné vlákna stretnúť s ťažkým spinlock tvrdením a ďalšie vlákna sú ovplyvnené, ak tieto pracovné vlákna nevykonajú správny výnos z plánovača.

Riešenie

Poznámka: Momentálne je k dispozícii iba aktualizácia pre SQL Server 2008 R2. Pre SQL Server 2008 nájdete v časti alternatívne riešenie tento problém obísť.

Kumulatívna aktualizácia informácií

SQL Server 2008 R2 Service Pack 1

Oprava tohto problému bola prvýkrát vydaná v kumulatívnej aktualizácii 1 pre SQL Server 2008 R2 Service Pack 1. Ďalšie informácie o možnostiach získania tohto balíka kumulatívnych aktualizácií nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na nasledovné číslo článku:

2544793 Kumulatívna aktualizácia balíka 1 pre SQL Server 2008 R2 Service Pack 1Poznámka: Pretože zostavy sú kumulatívne, každé nové vydanie opraviť obsahuje všetky rýchlych opráv a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúceho SQL servera 2008 R2 opraviť uvoľnenia. Odporúčame, aby ste zvážili uplatnenie najnovších opráv, ktoré túto rýchlu opravu obsahujú. Ďalšie informácie nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na príslušné číslo článku:

2567616 Zostavy SQL servera 2008 R2, ktoré boli vydané po vydaní SQL servera 2008 R2 Service Pack 1

SQL Server 2008 R2

Oprava tohto problému bola prvýkrát vydaná v kumulatívnej aktualizácii 7. Ďalšie informácie o možnostiach získania tohto balíka kumulatívnych aktualizácií pre SQL Server 2008 R2 nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na nasledovné číslo článku:

2507770 Kumulatívna aktualizácia balíka 7 pre SQL Server 2008 R2 Poznámka: Pretože zostavy sú kumulatívne, každé nové vydanie opraviť obsahuje všetky rýchlych opráv a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúceho SQL servera 2008 R2 opraviť uvoľnenia. Odporúčame, aby ste zvážili uplatnenie najnovších opráv, ktoré túto rýchlu opravu obsahujú. Ďalšie informácie nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na príslušné číslo článku:

981356 Zostavy SQL servera 2008 R2, ktoré boli vydané po vydaní SQL servera 2008 R2

Stav

Spoločnosť Microsoft potvrdzuje, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v tomto článku v časti Informácie v tomto článku sa týkajú nasledujúcich produktov.

Alternatívne riešenie

Ak chcete tento problém obísť v aplikácii SQL Server 2008 a SQL Server 2008 R2, premiestnite všetky odkazy na dočasné tabuľky do uložených procedúr.

Ďalšie informácie

Ďalšie informácie o tom, ako vytvoriť a upraviť základy tabuľky, nájdete na nasledujúcej webovej lokalite MSDN:

Vytvorenie a úprava základných informácií o tabuľkáchSpinlock môže byť identifikovaný z sys.dm_os_spinlock_stats dynamického zobrazenia správy (DMV) s vysokou mierou tvrdení na SOS_CACHESTORE spinlock. Ak chcete tento problém identifikovať, spustite dotaz, ktorý sa podobá nasledujúcemu hláseniu:

select cp.bucketid, count(cp.bucketid) as BucketCount, st.text from sys.dm_exec_cached_plans cp cross apply sys.dm_exec_sql_text(cp.plan_handle) as st group by cp.bucketid, st.text having count(cp.bucketid) >1 order by BucketCount descAk sú pri spustení tohto dotazu splnené nasledovné podmienky, môžu sa vyskytnúť problémy s výkonom:

  • Tento dotaz vygeneruje rovnaký text dotazu.

  • Počet rovnakých bucketid je veľký.Poznámka: Veľký počet rovnakých bucketid je zvyčajne viac ako 1000.

  • Dočasné tabuľky s odkazmi na dotazy

Potrebujete ďalšiu pomoc?

Chcete ďalšie možnosti?

Môžete preskúmať výhody predplatného, prehľadávať školiace kurzy, naučiť sa zabezpečiť svoje zariadenie a ešte oveľa viac.