KB2587511 – FIX: Chyba při vyvolání výstrahy výkon systému SQL Server v systému SQL Server 2008 R2

Společnost Microsoft distribuuje Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) jako jeden soubor ke stažení. Protože jsou opravy kumulativní, každá nová verze obsahuje všechny opravy hotfix a všechny aktualizace zabezpečení, které byly součástí předchozí verze aktualizace SQL Server 2008 R2 Service Pack 1 (SP1).

Příznaky

Když je v Microsoft SQL serveru 2008 R2 aktivována výstraha výkon serveru SQL, může se zobrazit tato chybová zpráva:

Msg 512, úroveň 16, stav 1, postup sp_sqlagent_get_perf_counters, řádek 40Subquery vrátil více než 1 hodnotu. Tento postup není povolený, pokud poddotaz následuje =,! =, <, <=, >, >= nebo když je poddotaz použit jako výraz.

Kromě toho se chybová zpráva v této situaci zaznamená do protokolu chyb agenta SQL serveru.Poznámka K tomuto problému dochází taky v Microsoft SQL serveru 2008.

Příčina

K tomuto problému dochází proto, že poddotazem uložené procedury msdb.dbo.sp_sqlagent_get_perf_counters systému vypočítá hodnotu čítače nesprávně. Poddotaz nemá v podmínce poddotazu relaci vnitřního spojení pro sloupec [object_name] . Z toho důvodu je nesprávně vráceno více řádků a problém uvedený v části Příznaky se zobrazí.Poznámka Pokud je aktivována výstraha výkon systému SQL Server, spustí se uložená procedura msdb.dbo.sp_sqlagent_get_perf_counters systémem.

Řešení

Informace o kumulativní aktualizaci

Kumulativní balíček aktualizací 3 pro SQL Server 2008 R2 SP1

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

2591748 Kumulativní balíček aktualizací 3 pro SQL Server 2008 R2 SP1Poznámka Vzhledem k tomu, že buildy jsou kumulativní, každá nová aktualizace obsahuje všechny opravy hotfix a všechny aktualizace zabezpečení, které byly součástí předchozí verze aktualizace SQL Server 2008 R2 SP1. Doporučujeme zvážit použití nejnovější aktualizace, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:

2567616 Buildy SQL Server 2008 R2 vydaná po vydání SQL serveru 2008 R2 SP1

Alternativní řešení

Tento problém vyřešíte tak, že aktualizujete poddotaz pro uloženou proceduru msdb.dbo.sp_sqlagent_get_perf_counters . Chcete-li to udělat, přidejte následující podmínku do klauzule WHERE těchto čtyř poddotazů, které se používají při výpočtu sloupce [hodnota] :

(spi1.[object_name] = spi2.[object_name])

Po přidání podmínky budou poddotazy vypadat 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

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.

Potřebujete další pomoc?

Rozšiřte své znalosti a dovednosti
Projít školení
Získejte nové funkce jako první
Připojit se k programu Microsoft Insider

Byly tyto informace užitečné?

Děkujeme za váš názor!

Děkujeme vám za váš názor! Pravděpodobně bude užitečné, když vás spojíme s některým z našich agentů podpory Office.

×