REVISIÓN: Uso de memoria del plan de consulta compilado puede aumentar inesperadamente en SQL Server 2005

Seleccione idioma Seleccione idioma
Id. de artículo: 919636 - Ver los productos a los que se aplica este artículo
Nº de error: 810 (revisión SQL)
Aviso
Microsoft distribuye correcciones de Microsoft SQL Server 2005 como un archivo descargable. Como las revisiones son acumulativas, cada versión nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad incluidas en el anterior de SQL Server 2005.
Expandir todo | Contraer todo
En este artículo describe lo siguiente acerca de esta versión de revisión:
  • Los problemas que corrigen este paquete de hotfix
  • Los requisitos previos para instalar el paquete de hotfix
  • Información acerca de si debe reiniciar o no el equipo después de instalar el paquete de hotfix
  • Información acerca de si queda reemplazado o el paquete de hotfix no por otro paquete de hotfix
  • Información acerca de si deben hacer cambios en el registro
  • Archivos contenidos en el paquete de hotfix

Síntomas

Cuando examine el plan de consulta compilado de una consulta, puede observar que el uso de memoria del plan de consulta compilados puede aumentar inesperadamente en comparación con Microsoft SQL Server 2000 SQL Server 2005.

Este problema puede producirse cuando se cumple una de las condiciones siguientes:
  • condición 1: La consulta hace referencia a una tabla que utiliza columnas calculadas.
  • condición 2: La consulta contiene las operaciones de cadena entre los valores de las columnas nvarchar y cadenas ANSI. Por ejemplo, la operación de cadena compara los valores de las columnas nvarchar a cadenas ANSI.
  • condición 3: La consulta contiene una referencia a una tabla que tiene una columna calculada. La columna calculada se basa en una columna nvarchar . Sin embargo, la columna equipo que utiliza las constantes de cadena ANSI en la expresión.
Condiciones 2 y 3 pueden causar un aumento significativo del uso de memoria de un plan de consulta compilado.

Por ejemplo, tiene una tabla que tiene una columna nvarchar . El nombre de la tabla es MyTable y el nombre de la columna nvarchar es MyCol. A continuación, para definir la consulta, se utiliza la siguiente sintaxis:
SELECT CASE MyCol
          WHEN 'Value1' THEN 'NewValue1'
          WHEN 'Value2' THEN 'NewValue2'
          ELSE MyCol
       END
FROM MyTable
en este ejemplo, las cadenas "Valor1", "Valor2", "NewValue1" y "NewValue2" son cadenas ANSI. Los valores de la columna de nvarchar MyCol primero se comparan con las cadenas ANSI "Valor1" y "Valor2". A continuación, el valor correspondiente de la "NewValue1", "NewValue2" se ha elegido cadena ANSI o el valor original de la columna MyCol.

Puede ver el uso de memoria de plan compilado examinando la columna pagesused de la tabla de sistema sys.syscacheobjects o la vista de administración dinámica sys.dm_exec_cached_plans.

Este aumento de tamaño del plan de consulta compilados también puede provocar un aumento de tiempo de espera para el tipo de espera RESOURCE_SEMAPHORE_QUERY_COMPILE.

Solución

Hay una revisión compatible de Microsoft. Sin embargo, esta revisión se diseñó para corregir el problema descrito en este artículo. Aplíquela sólo a los sistemas que experimenten este problema específico. Esta revisión podría sometida a comprobaciones adicionales. Por lo tanto, si no se ve muy afectado por este problema, recomendamos que espere a la siguiente actualización de software que contenga este hotfix.

Si la revisión está disponible para descarga, es hay una sección de "Descarga de revisión disponible" al principio de este artículo. Póngase en contacto si no aparece en esta sección, con los Microsoft cliente Servicios de y soporte técnico para obtener la revisión de.

Nota Si se producen problemas adicionales o si cualquier solución de problemas es necesario, quizás tenga que crear una solicitud de servicio independiente. Los costos habituales de soporte se aplicarán a las preguntas de soporte técnico adicionales y problemas que no guarden relación con esta revisión específica. Para obtener una lista completa de números de teléfono de servicio de atención al cliente y soporte técnico o para crear una solicitud de servicio independiente, visite el siguiente sitio Web:
http://support.microsoft.com/contactus/?ws=support
Nota El formulario "Descarga de revisión disponibles" muestra los idiomas para que la revisión está disponible. Si no ve su idioma, es porque una revisión no está disponible para ese idioma.

Requisitos previos

Debe tener para aplicar este hotfix instalado el Service Pack 1 (SP1) de SQL Server 2005. Para obtener más información acerca de cómo obtener SQL Server 2005 Service Pack 1, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
913089Cómo obtener el service pack más reciente para SQL Server 2005

Información de reinicio

No es necesario reiniciar el equipo después de aplicar este hotfix. Sin embargo, si ya ha afectado por este problema, debe seguir los pasos de la sección "Workground" después de aplicar esta revisión para revertir los archivos de base de datos en buen estado.

Información del registro

No es necesario cambiar el registro.

Información de archivos de hotfix

Este hotfix contiene sólo los archivos necesarios para corregir los problemas recogidos en este artículo. Esta revisión no puede contener todos los archivos que debe tener para actualizar plenamente un producto a la compilación más reciente.

La versión en inglés de este hotfix tiene los atributos de archivo (o atributos de último archivo) mostrados en la siguiente tabla. Las fechas y las horas de estos archivos se muestran en hora universal coordinada (UTC). La información de los archivos se convertirá a la hora local cuando la vea. Para averiguar la diferencia entre hora UTC y la hora local, utilice la ficha zona horaria el elemento fecha y hora en el panel de control.
SQL Server 2005 versión 32
Contraer esta tablaAmpliar esta tabla
Nombre de archivoArchivo VersiónTamaño del archivoFechaTiempoPlataforma
Microsoft.SqlServer.SqlEnum.dll9.0.2164.0908,06414-Jun-200612: 32x 86
Microsoft.SqlServer.mgdsqldumper.dll2005.90.2164.075,55214-Jun-200612: 29x 86
Msgprox.dll2005.90.2164.0197,92014-Jun-200612: 29x 86
Replprov.dll2005.90.2164.0547,61614-Jun-200612: 31x 86
Replrec.dll2005.90.2164.0782,11214-Jun-200612: 32x 86
Msmdlocal.dll9.0.2164.015,661,85614-Jun-200612: 33x 86
Sqlaccess.dll2005.90.2164.0347,93614-Jun-200612: 31x 86
Sqlservr.exe2005.90.2164.028,950,87214-Jun-200612: 33x 86
SQL Server 2005 x versión de 64 bits
Contraer esta tablaAmpliar esta tabla
Nombre de archivoArchivo VersiónTamaño del archivoFechaTiempoPlataforma
Microsoft.SqlServer.SqlEnum.dll9.0.2164.0875,29614-Jun-200613: 12x 86
Microsoft.SqlServer.mgdsqldumper.dll2005.90.2164.091,42414-Jun-200612: 29x 64
Msgprox.dll2005.90.2164.0259,36014-Jun-200613: 10x 64
Replprov.dll2005.90.2164.0745,24814-Jun-200613: 12x 64
Replrec.dll2005.90.2164.01,008,41614-Jun-200613: 12x 64
Msmdlocal.dll9.0.2164.015,661,85614-Jun-200612: 33x 86
Sqlaccess.dll2005.90.2164.0355,10414-Jun-200613: 11x 86
Sqlservr.exe2005.90.2164.039,251,23214-Jun-200613: 13x 64
Versión de arquitectura Itanium de SQL Server 2005
Contraer esta tablaAmpliar esta tabla
Nombre de archivoArchivo VersiónTamaño del archivoFechaTiempoPlataforma
Microsoft.SqlServer.SqlEnum.dll9.0.2164.0875,29614-Jun-200612: 29x 86
Microsoft.SqlServer.mgdsqldumper.dll2005.90.2164.0163,10414-Jun-200612: 29IA-64
Msgprox.dll2005.90.2164.0542,49614-Jun-200612: 28IA-64
Msmdlocal.dll9.0.2164.048,733,98414-Jun-200612: 30IA-64
Replprov.dll2005.90.2164.01,617,18414-Jun-200612: 29IA-64
Replrec.dll2005.90.2164.02,141,47214-Jun-200612: 29IA-64
Sqlaccess.dll2005.90.2164.0349,47214-Jun-200612: 28x 86
Sqlservr.exe2005.90.2164.072,208,67214-Jun-200612: 30IA-64

Solución

Para evitar este problema, agregue una letra mayúscula "N" delante de todas las cadenas en el contexto del problema. Puede cambiar el ejemplo que se describe en la sección "Síntomas" utilizando la siguiente sintaxis:

SELECT CASE MyCol WHEN N'Value1' THEN N'NewValue1' WHEN N'Value2' THEN N'NewValue2' ELSE MyCol END FROM MyTable

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:".

Más información

Puede ver el uso de memoria de plan compilado examinando la columna pagesused de la tabla de sistema sys.syscacheobjects o la vista de administración dinámica sys.dm_exec_cached_plans.

Para obtener más información acerca de la tabla de sistema sys.syscacheobjects, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms187815.aspx
Para obtener más información acerca de la vista de administración dinámica sys.dm_exec_cached_plans, visite el siguiente sitio Web de MSDN:
http://msdn.microsoft.com/en-us/library/ms187404.aspx
Para obtener más información sobre el esquema de nomenclatura para actualizaciones de Microsoft SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
822499Nuevo esquema de nomenclatura para los paquetes de actualización del software de Microsoft SQL Server
Para obtener más información acerca de la terminología relativa de la actualización de software, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684Descripción de la terminología estándar utilizada para describir las actualizaciones de software de Microsoft

Propiedades

Id. de artículo: 919636 - Última revisión: martes, 20 de noviembre de 2007 - Versión: 1.9
La información de este artículo se refiere a:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Standard X64 Edition
Palabras clave: 
kbmt kbautohotfix kbsql2005engine kbhotfixserver kbexpertiseadvanced kbqfe kbfix kbpubtypekc KB919636 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 919636

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com