Salt la conținutul principal
Asistență
Conectare

KB2587511-remediere: eroare atunci când este crescută o avertizare de stare de performanță SQL Server în SQL Server 2008 R2

Microsoft distribuie remedieri Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) ca un fișier descărcabil. Deoarece remedierile sunt cumulative, fiecare lansare nouă conține toate remedierile rapide și toate actualizările de securitate care au fost incluse în versiunea anterioară de actualizare SQL Server 2008 R2 Service Pack 1 (SP1).

Simptome

Atunci când o avertizare de stare de performanță SQL Server este crescută în Microsoft SQL Server 2008 R2, este posibil să primiți următorul mesaj de eroare:

MSG 512, nivel 16, stat 1, procedură sp_sqlagent_get_perf_counters, 40Subquery linie a returnat mai mult de 1 valoare. Acest lucru nu este permis atunci când subinterogarea urmează =,! =, <, <=, >, >= sau când subinterogarea este utilizată ca expresie.

În plus, mesajul de eroare este înregistrat în Jurnalul de erori SQL Server Agent în această situație.Notă Această problemă apare și în Microsoft SQL Server 2008.

Cauză

Această problemă apare deoarece subinterogarea procedurii stocate în sistemul msdb.dbo.sp_sqlagent_get_perf_counters calculează valoarea unui contor incorect. Subinterogarea lipsește o relație de asociere internă pentru coloana [object_name] în starea subinterogării. Prin urmare, mai multe rânduri sunt returnate incorect și apare problema menționată în secțiunea "simptome".Notă Procedura stocată a sistemului msdb.dbo.sp_sqlagent_get_perf_counters rulează atunci când este ridicată o avertizare de stare de performanță SQL Server.

Rezolvare

Informații despre actualizarea cumulativă

Pachetul de actualizare cumulativă 3 pentru SQL Server 2008 R2 SP1

Remedierea pentru această problemă a fost lansată pentru prima dată în pachetul de actualizare cumulativă 3. Pentru mai multe informații despre cum se obține acest pachet de actualizare cumulativă pentru SQL Server 2008 R2 SP1, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:

2591748 Pachetul de actualizare cumulativă 3 pentru SQL Server 2008 R2 SP1Notă Deoarece compilările sunt cumulative, fiecare nouă versiune de actualizare conține toate remedierile rapide și toate actualizările de securitate care au fost incluse în versiunea anterioară de actualizare SQL Server 2008 R2 SP1. Vă recomandăm să luați în considerare aplicarea celei mai recente versiuni de actualizare care conține această remediere rapidă. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a-l vedea în Baza de cunoștințe Microsoft:

2567616 SQL Server 2008 R2 construiește care au fost lansate după ce s-a lansat SQL Server 2008 R2 SP1

Soluție de evitare

Pentru a rezolva această problemă, actualizați subinterogarea procedurii stocate în sistemul de msdb.dbo.sp_sqlagent_get_perf_counters . Pentru a face acest lucru, adăugați următoarea condiție la clauza Where din cele patru subinterogări care sunt utilizate în calculul coloanei [valoare] :

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

După ce adăugați condiția, subinterogările seamănă cu următoarele:

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

Stare

Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.

Aveți nevoie de ajutor suplimentar?

Extindeți-vă competențele
Explorați instruirea
Fiți primul care obține noile caracteristici
Alăturați-vă la Microsoft Insider

V-a fost de ajutor această informație?

Vă mulțumim pentru feedback!

Vă mulțumim pentru feedback! Se pare că ar fi util să luați legătura cu unul dintre agenții noștri de asistență Office.

×