Applies ToSQL Server 2008 Enterprise SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise

Microsoft distribuye las soluciones Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) como un archivo que se puede descargar. Debido a que las correcciones son acumulativas, cada versión nueva contiene todas las revisiones y todas las actualizaciones de seguridad incluidas en la versión anterior de la actualización de SQL Server 2008 R2 Service Pack 1 (SP1).

Síntomas

Cuando se genera una alerta de condición de rendimiento de SQL Server en Microsoft SQL Server 2008 R2, es posible que reciba el siguiente mensaje de error:

MSG 512, nivel 16, estado 1, procedimiento sp_sqlagent_get_perf_counters, línea 40Subquery devolvió más de 1 valor. Esto no está permitido cuando la subconsulta sigue a =,! =, <, <=, >, >= o cuando la subconsulta se usa como expresión.

Además, el mensaje de error se registra en el registro de errores del Agente SQL Server en esta situación.Nota Este problema también se produce en Microsoft SQL Server 2008.

Causa

Este problema se produce porque la subconsulta del msdb.DBO.sp_sqlagent_get_perf_counters procedimiento almacenado del sistema calcula el valor de un contador incorrectamente. La subconsulta no tiene una relación de combinación interna para la columna [object_name] en la condición de la subconsulta. Por lo tanto, se devuelven varias filas de forma incorrecta y se muestra el problema que se menciona en la sección "síntomas".Nota El procedimiento almacenado del sistema msdb.DBO.sp_sqlagent_get_perf_counters se ejecuta cuando se genera una alerta de condición de rendimiento de SQL Server.

Resolución

Información sobre la actualización acumulativa

Paquete de actualización acumulativa 3 para SQL Server 2008 R2 SP1

La corrección para este problema se publicó por primera vez en el paquete de actualización acumulativa 3. Para obtener más información sobre cómo obtener este paquete de actualización acumulativa para SQL Server 2008 R2 SP1, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

2591748 Paquete de actualización acumulativa 3 para SQL Server 2008 R2 SP1Nota Como las compilaciones son acumulativas, cada nueva versión de actualización contiene todas las revisiones y todas las actualizaciones de seguridad incluidas en la versión anterior de la actualización de SQL Server 2008 R2 SP1. Le recomendamos que considere aplicar la versión de actualización más reciente que contiene este Hotfix. Si desea obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

2567616 Las compilaciones de SQL Server 2008 R2 que se publicaron después de que se publicó SQL Server 2008 R2 SP1

Solución alternativa

Para solucionar este problema, actualice la subconsulta del procedimiento almacenado del sistema msdb.DBO.sp_sqlagent_get_perf_counters . Para ello, agregue la condición siguiente a la cláusula Where de las cuatro subconsultas que se usan en el cálculo de columnas [VALUE] :

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

Después de agregar la condición, las subconsultas se parecen a las siguientes:

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

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft recogidos en la sección "Se aplica a".

¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.

Las comunidades le ayudan a formular y responder preguntas, enviar comentarios y leer a expertos con conocimientos extensos.