Microsoft distribuuje Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) opravy ako jeden súbor na stiahnutie. Keďže opravy sú kumulatívne, každé nové vydanie obsahuje všetky rýchlych opráv a všetky aktualizácie zabezpečenia, ktoré boli súčasťou predchádzajúceho vydania aktualizácie SQL Server 2008 R2 Service Pack 1 (SP1).
Príznaky
Keď sa v Microsoft SQL Server 2008 R2 zobrazí upozornenie o stave výkonu SQL servera, môže sa zobraziť nasledujúce chybové hlásenie:
MSG 512, úroveň 16, štát 1, postup sp_sqlagent_get_perf_counters, 40Subquery riadkov vrátil viac ako 1 hodnotu. Toto nie je povolené, ak poddotaz nasleduje =,! =, <, <=, >, >= alebo keď sa poddotaz použije ako výraz.
Okrem toho sa chybové hlásenie zapíše do denníka chýb SQL servera agent v tejto situácii.Poznámka: Tento problém sa vyskytuje aj v Microsoft SQL Server 2008.
Príčina
Tento problém sa vyskytuje, pretože poddotaz systému msdb.dbo.sp_sqlagent_get_perf_counters uložená procedúra vypočítava hodnotu počítadla nesprávne. Poddotaz nemá vzťah vnútorného spojenia pre stĺpec [object_name] v podmienke poddotazu. Z tohto dôvodu sa nesprávne vracajú viaceré riadky a vyskytuje sa problém uvedený v časti príznaky.Poznámka: Msdb.dbo.sp_sqlagent_get_perf_counters systém uložená procedúra sa spustí pri vznesení upozornenia na stav výkonu SQL servera.
Riešenie
Kumulatívna aktualizácia informácií
Kumulatívna aktualizácia balíka 3 pre SQL Server 2008 R2 SP1
Oprava tohto problému bola prvýkrát vydaná v kumulatívnej aktualizácii balíka 3. Ďalšie informácie o možnostiach získania tohto balíka kumulatívnych aktualizácií pre SQL Server 2008 R2 SP1 nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na nasledovné číslo článku:
2591748 Kumulatívna aktualizácia balíka 3 pre SQL Server 2008 R2 SP1Poznámka: Keďže zostavy sú kumulatívne, každé nové vydanie aktualizácie obsahuje všetky rýchle opravy a všetky aktualizácie zabezpečenia, ktoré boli súčasťou predchádzajúceho vydania aktualizácie SQL servera 2008 R2 SP1. Odporúčame, aby ste zvážili použitie najnovších aktualizácií, 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 SP1
Alternatívne riešenie
Ak chcete tento problém obísť, aktualizujte poddotaz msdb.dbo.sp_sqlagent_get_perf_counters uloženej procedúry systému. Ak to chcete urobiť, pridajte nasledujúcu podmienku k klauzule where zo štyroch poddotazov, ktoré sa používajú v rámci výpočtu stĺpca [hodnota] :
(spi1.[object_name] = spi2.[object_name])
Po pridaní podmienky sa Poddotazy podobajú takto:
SELECT CASE spi2.cntr_value WHEN 0 THEN 1 ELSE spi2.cntr_value ENDFROM sys.dm_os_performance_counters spi2WHERE (spi1.[object_name] = spi2.[object_name])AND (spi1.counter_name + ' ' = SUBSTRING(spi2.counter_name, 1, PATINDEX('% Base%', spi2.counter_name)))AND (spi1.instance_name = spi2.instance_name)AND (spi2.cntr_type = @perfTypeLargeRawBase
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.