KB2587511-Fix: Fehler, wenn eine SQL Server-Leistungs Bedingungs Warnung in SQL Server 2008 R2 ausgelöst wird

Microsoft vertreibt Microsoft SQL Server 2008 R2 Service Pack 1 (SP1)-Fixes als eine herunterladbare Datei. Da die Fixes kumulativ sind, enthält jede neue Version alle Hotfixes und alle Sicherheitsupdates, die in der vorherigen Update Version von SQL Server 2008 R2 Service Pack 1 (SP1) enthalten waren.

Problembeschreibung

Wenn eine SQL Server-Leistungs Bedingungs Warnung in Microsoft SQL Server 2008 R2 ausgelöst wird, wird möglicherweise die folgende Fehlermeldung angezeigt:

Msg 512, Ebene 16, Zustand 1, Prozedur sp_sqlagent_get_perf_counters, Zeile 40Subquery hat mehr als 1 Wert zurückgegeben. Dies ist nicht zulässig, wenn die Unterabfrage =,! =, #a0, <=, #a2, >= oder wenn die Unterabfrage als Ausdruck verwendet wird, folgt.

Darüber hinaus wird die Fehlermeldung in dieser Situation im Fehlerprotokoll des SQL Server-Agents protokolliert.Hinweis Dieses Problem tritt auch in Microsoft SQL Server 2008 auf.

Ursache

Dieses Problem tritt auf, weil die Unterabfrage der gespeicherten msdb.dbo.sp_sqlagent_get_perf_counters -Systemprozedur den Wert eines Indikators falsch berechnet. Für die Unterabfrage fehlt eine innere Join-Beziehung für die [object_name] -Spalte in der Bedingung der Unterabfrage. Daher werden mehrere Zeilen falsch zurückgegeben, und das Problem, das im Abschnitt "Symptom" erwähnt wird, tritt auf.Hinweis Die gespeicherte msdb.dbo.sp_sqlagent_get_perf_counters -Systemprozedur wird ausgeführt, wenn eine SQL Server-Leistungs Bedingungs Warnung ausgelöst wird.

Fehlerbehebung

Informationen zum kumulativen Update

Kumulatives Updatepaket 3 für SQL Server 2008 R2 SP1

Der Fix für dieses Problem wurde erstmals im kumulativen Updatepaket 3 veröffentlicht. Wenn Sie weitere Informationen zum beziehen dieses kumulativen Updatepakets für SQL Server 2008 R2 SP1 erhalten möchten, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:

2591748 Kumulatives Updatepaket 3 für SQL Server 2008 R2 SP1Hinweis Da die Builds kumulativ sind, enthält jede neue Update Version alle Hotfixes und alle Sicherheitsupdates, die in der vorherigen SQL Server 2008 R2 SP1-Update Version enthalten waren. Wir empfehlen, die neueste Update Version zu verwenden, die diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:

2567616 Die SQL Server 2008 R2-Builds, die nach der Veröffentlichung von SQL Server 2008 R2 SP1 veröffentlicht wurden

Problemumgehung

Um dieses Problem zu umgehen, aktualisieren Sie die Unterabfrage der gespeicherten msdb.dbo.sp_sqlagent_get_perf_counters -Systemprozedur. Fügen Sie dazu die folgende Bedingung zur Where -Klausel der vier Unterabfragen hinzu, die in der [value] -Spaltenberechnung verwendet werden:

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

Nachdem Sie die Bedingung hinzugefügt haben, ähneln die Unterabfragen der folgenden:

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

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.

Benötigen Sie weitere Hilfe?

Ihre Office-Fähigkeiten erweitern
Schulungen erkunden
Neue Funktionen als Erster erhalten
Microsoft Insider beitreten

War diese Information hilfreich?

Vielen Dank für Ihr Feedback!

Vielen Dank für Ihr Feedback. Es klingt, als ob es hilfreich sein könnte, Sie mit einem unserer Office-Supportmitarbeiter zu verbinden.

×