PRB: SET CONCAT_NULL_YIELDS_NULL puede producir procedimientos almacenados para recompilar

Seleccione idioma Seleccione idioma
Id. de artículo: 294942 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Síntomas

Si un procedimiento almacenado contiene la instrucción SET CONCAT_NULL_YIELDS_NULL, la instrucción cambia el valor actual de CONCAT_NULL_YIELDS_NULL se recompilarán el procedimiento cada vez que se ejecuta. Esto puede conducir a problemas de rendimiento.

Causa

Recompilación es necesario porque cambiar su valor de CONCAT_NULL_YIELDS_NULL también cambiará el resultado y la forma en que se interpretan los comandos. En SQL Server 7.0 y SQL Server 2000, CONCAT_NULL_YIELDS_NULL se establece en ON de forma predeterminada, de acuerdo con los estándares ANSI.

Estableciendo CONCAT_NULL_YIELDS_NULL en OFF en la base de datos de nivel no produce el resultado deseado porque ODBC y OLE DB establecen esta propiedad en ON cuando se conectan. (Dado que esto se especifica mediante un poco en el paquete de conexión, Analizador de SQL no muestra que se establece esta propiedad.)

Solución

No establezca CONCAT_NULL_YIELDS_NULL dentro del procedimiento almacenado. La solución recomendada es utilizar la función ISNULL al concatenar cadenas.

Por ejemplo, una consulta debe escribirse como sigue:
SELECT * FROM mytable WHERE name LIKE 'Xavier ' + ISNULL(@lastname,'') + '%'
				
lugar de hacerlo así:
SELECT * FROM mytable WHERE name LIKE 'Xavier ' + @lastname + '%'
				
aunque no se recomienda una solución alternativa sería emitir la instrucción SET CONCAT_NULL_YIELDS_NULL antes de ejecutar el procedimiento almacenado.

Más información

Este artículo direcciones sólo una razón que almacenan procedimientos puede compilarse; para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
243586INF: Solucionar problemas de recompilación de procedimientos almacenados

Propiedades

Id. de artículo: 294942 - Última revisión: jueves, 16 de octubre de 2003 - Versión: 3.2
La información de este artículo se refiere a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Palabras clave: 
kbmt kbprb KB294942 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): 294942

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