REVISIÓN: Mensaje de error "Intentando establecer el valor de la columna non--able en NULL" cuando ejecuta una consulta que utiliza la función ISNULL() para seleccionar valores de una columna que acepta valores NULL en SQL Server 2008

Seleccione idioma Seleccione idioma
Id. de artículo: 981037 - Ver los productos a los que se aplica este artículo
Microsoft distribuye correcciones de Microsoft SQL Server 2008 como un archivo que se puede descargar. Como 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.
Expandir todo | Contraer todo

Síntomas

Tenga en cuenta la situación siguiente:
  • En Microsoft SQL Server 2008, ejecutar una consulta que utiliza la función ISNULL() para seleccionar los valores que están en una columna que acepta valores NULL.
  • La tabla que contiene la columna que acepta valores NULL se combina con otra tabla en la columna que acepta valores NULL.
  • El plan de consulta creada por el optimizador de consultas utiliza una combinación hash, una cola de impresión o una tabla de ordenación debajo el operador JOIN.
En esta situación, recibe mensaje de error siguientes:
Msj 681, nivel 16, estado 3, línea 2
Al intentar establecer el valor de la columna que no sea capaz NULL a NULL.

Causa

Optimizador de consultas determina que la columna que se hace referencia en la función ISNULL() es que no aceptan valores NULL porque el operador de combinación rechaza los valores NULL. A continuación, en el plan de consultas optimizador de consultas inserta la expresión que se encuentra en la función ISNULL() debajo el operador JOIN. Además, el valor de la expresión puede ser NULL. Sin embargo, optimizador de consultas no re-derive la propiedad de aceptación de valores NULL para la expresión. A continuación, en el plan de consulta una tabla de trabajo se utiliza para implementar la combinación hash, la cola de impresión o la tabla de ordenación que incluya la expresión. Además, la columna correspondiente en la tabla de trabajo se declara como que no aceptan valores NULL. Cuando el motor de consultas de SQL Server intenta insertar valores NULL en la tabla de trabajo, se produce el error.

Solución

La corrección para este problema se lanzó por primera vez en la actualización acumulativa 7 para SQL Server 2008 Service Pack 1. Para obtener más información acerca de este paquete de actualización acumulativa, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
979065Paquete de actualización acumulativa 7 para SQL Server 2008 Service Pack 1
Nota Como las compilaciones son acumulativas, cada nueva versión de corrección contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior de SQL Server 2008. Recomendamos que considere aplicar la versión más reciente de correcció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:
970365SQL Server 2008 generaciones que se publicaron después de la publicación de SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008 revisiones se crean para determinados service pack de SQL Server. Debe aplicar un hotfix de SQL Server 2008 Service Pack 1 a 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.

Solución

Para evitar este problema, utilice uno de los métodos siguientes.

Método 1

Quitar la función ISNULL() de la consulta.

NotaPorque la columna que se encuentra en esta función proviene el operador JOIN que rechaza los valores NULL, la función ISNULL() es redundante.

Método 2

Vuelva a escribir la consulta, de modo que el plan de consulta no utilice una combinación hash, una cola de impresión o una tabla de ordenación. Por ejemplo, si la consulta contiene una cláusula ORDER BY, crear un índice agrupado o sobre que proporciona ordenación requiere e incluye todas las columnas requeridas. Cuando utiliza este método, el optimizador de consultas no utiliza una tabla de ordenación.

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:".

Referencias

Para obtener información acerca del modelo de servicio de actualización incremental para 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 desde 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 relativa a las actualizaciones 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: 981037 - Última revisión: lunes, 15 de marzo de 2010 - Versión: 1.1
La información de este artículo se refiere a:
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Workgroup
Palabras clave: 
kbmt kbhotfixserver kbexpertiseadvanced kbsurveynew kbqfe kbfix KB981037 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): 981037

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