REVISIÓN: No se almacenarán el plan de consulta para un procedimiento almacenado si el procedimiento almacenado utiliza una variable BLOB y se utiliza la variable en una función de la cadena de Microsoft SQL Server 2008 o en Microsoft SQL Server 2008 R2

Seleccione idioma Seleccione idioma
Id. de artículo: 2380435 - Ver los productos a los que se aplica este artículo
Microsoft distribuye Microsoft SQL Server 2008 y Microsoft SQL Server 2008 R2 se resuelve como un archivo descargable. Debido a que las revisiones son acumulativas, cada versión nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008 o SQL Server 2008 R2.
Expandir todo | Contraer todo

En esta página

Síntomas

Tenga en cuenta la situación siguiente:
  • Crear un procedimiento almacenado de Microsoft SQL Server 2008 o en Microsoft SQL Server 2008 R2.
  • El procedimiento almacenado utiliza una variable de objeto binario grande (BLOB).
  • Se utiliza la variable BLOB en una función de cadena.
  • Ejecutar el procedimiento almacenado.
En este escenario, el plan de consulta para el procedimiento almacenado no se almacena en caché.

Solución

Información de la actualización acumulativa

Service Pack 1 de SQL Server 2008

La solución a este problema se publicó en primer lugar en el 10 de actualización acumulativa para SQL Server 2008 Service Pack 1. Para obtener más información acerca de este paquete, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
227960410 De paquete de actualización acumulativa para SQL Server 2008 Service Pack 1
NotaDebido a que las compilaciones son acumulativas, cada nueva versión de la revisión contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008. Microsoft recomienda que considere la posibilidad de aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
970365Generación de SQL Server 2008 que se publicaron después del lanzamiento de SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008, las revisiones se crean para determinados service pack de SQL Server. Debe aplicar una revisión de SQL Server 2008 Service Pack 1 para una instalación de SQL Server 2008 Service Pack 1. De forma predeterminada, cualquier hotfix suministrada en un service pack de SQL Server se incluye en el siguiente service pack de SQL Server.

Service Pack 2 de SQL Server 2008

La solución a este problema se publicó en primer lugar en el 1 de actualización acumulativa para SQL Server 2008 Service Pack 2. Para obtener más información acerca de este paquete, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2289254Actualización acumulativa 1 de SQL Server 2008 Service Pack 2
NotaDebido a que las compilaciones son acumulativas, cada nueva versión de la revisión contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008. Se recomienda que considere la posibilidad de aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2402659Generación de SQL Server 2008 que se publicaron después del lanzamiento de SQL Server 2008 Service Pack 2

SQL Server 2008 R2

La solución a este problema se publicó en primer lugar en la actualización acumulativa (4). Para obtener más información acerca de cómo obtener este paquete de actualización acumulativa para SQL Server 2008 R2, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2345451Paquete acumulativo de actualizaciones 4 para SQL Server 2008 R2
NotaDebido a que las compilaciones son acumulativas, cada nueva versión de la revisión contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008 R2. Se recomienda que considere la posibilidad de aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
981356Generación de SQL Server 2008 R2 que se publicaron después del lanzamiento de SQL Server 2008 R2

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

Para reproducir este problema, siga estos pasos:
  1. Ejecute el siguiente código crear dos procedimientos almacenados ("p_test1" y "p_test2") de. "P_test1" utiliza una variable BLOB, y "p_test2" utiliza una variable de nvarchar (100).
    use tempdb
    go
    if OBJECT_ID('p_test1') is not null drop proc p_test1
    if OBJECT_ID('p_test2') is not null drop proc p_test2
    go
    create proc p_test1
    @s nvarchar(max)
    as
    begin
    select * from sys.objects 
    where name = UPPER(@s)
    end
    go
    create proc p_test2
    @s nvarchar(100)
    as
    begin
    select * from sys.objects 
    where name = UPPER(@s)
    end
    go
    
  2. Ejecute el siguiente código para borrar la caché de procedimientos y para ejecutar los dos procedimientos almacenados:
    dbcc freeproccache
    go
    exec p_test1 N'abc'
    exec p_test2 N'abc'
    go
    
  3. Ejecute el siguiente código para comprobar el plan almacenado en caché:
    select object_name(CONVERT(int, a.value)), cp.*
    from sys.dm_exec_cached_plans cp
    cross apply sys.dm_exec_plan_attributes(cp.plan_handle) a
    where cp.objtype = 'Proc'
    and a.attribute = 'objectid'
    
    
NotaSi hay muchas ejecuciones simultáneas de este tipo de procedimiento almacenado en un equipo con Microsoft SQL Server 2008 o una instancia de Microsoft SQL Server 2008 R2, es posible que se debe a que los bloqueos de compilación en la instancia de bloqueo.

Para obtener más información acerca de la descripción de bloqueos de compilación causa el bloqueo de SQL Server, consulte el siguiente artículo de Microsoft Knowledge Base:
263889Descripción de SQL Server bloqueo causado por los bloqueos de compilación

Referencias

Para obtener más información acerca de las funciones de cadena (Transact-SQL), visite el siguiente sitio Web de Microsoft:
Funciones de cadena (Transact-SQL)
Para obtener más información sobre el modelo de servicio incremental de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
935897Un modelo incremental de servicio está disponible en el equipo de SQL Server para entregar revisiones para problemas detectados
Para obtener más información acerca del esquema de nomenclatura para las actualizaciones de 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 de software de Microsoft SQL Server
Para obtener más información acerca de la terminología 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: 2380435 - Última revisión: lunes, 15 de noviembre de 2010 - Versión: 2.0
La información de este artículo se refiere a:
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Standard Edition for Small Business
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Workgroup
Palabras clave: 
kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2380435 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): 2380435

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