KB2380361 - CORRECCIÓN: Mensaje de error al ejecutar el procedimiento almacenado "sp_createstats" en SQL Server 2008 o en SQL Server 2008 R2 si la tabla contiene una columna calculada nondeterminista

Se aplica a
SQL Server 2008 Enterprise SQL Server 2008 Developer SQL Server 2008 Standard SQL Server 2008 Standard Edition for Small Business SQL Server 2008 Workgroup SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Workgroup SQL Server 2008 R2 Standard Edition for Small Business

Microsoft distribuye las correcciones de Microsoft SQL Server 2008 y Microsoft SQL Server 2008 R2 como un archivo descargable. Dado que las correcciones son acumulativas, cada nueva versión contiene todas las revisiones y todas las correcciones de seguridad que se incluyeron con la versión anterior de corrección de SQL Server 2008 o SQL Server 2008 R2.

Síntomas

Tenga en cuenta el siguiente escenario:

  • Se crea una tabla que contiene una columna calculada no predeterminada en una SQL Server 2008 o una base de datos de SQL Server 2008 R2. Por ejemplo, ejecute la instrucción siguiente para crear una tabla que contenga una columna calculada nondeterministic: CREATE TABLE [dbo]. [t1](
            [DateOfBirth] FECHA,
            [Edad] AS (FLOOR(DATEDIFF(DAY,[DateOfBirth],GETDATE())/(365.0))))GO Nota En esta instrucción, la función GETDATE es nodeterminista.

  • Ejecute el sp_createstats procedimiento almacenado para mejorar el rendimiento.

    Nota El procedimiento almacenado sp_createstats crea estadísticas de una sola columna para las columnas válidas de la base de datos.

En este escenario, se produce un error en el procedimiento almacenado de sp_createstats. Por lo tanto, es posible que no se hayan creado las estadísticas de algunas columnas válidas. Además, aparece un mensaje de error similar al siguiente:

Nota

Msg 2729, Nivel 16, Estado 1, Línea 1

La columna "Edad" de la tabla 'dbo.t1' no se puede usar en un índice o estadísticas ni como clave de partición porque no es determinista.

Causa

Este problema se produce porque la sp_createstats procedimiento almacenado no omite las columnas calculadas nondeterministic.

Resolución

Información sobre la actualización acumulativa

SQL Server 2008 Service Pack 1

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

2413738 paquete de actualización acumulativa 11 para SQL Server 2008 Service Pack 1
Nota Dado que las compilaciones son acumulativas, cada nueva versión de corrección contiene todas las revisiones y todas las correcciones de seguridad que se incluyeron con la versión de corrección de SQL Server 2008 anterior. Microsoft recomienda que considere la posibilidad de aplicar la corrección más reciente que contiene esta revisión. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

970365 Las compilaciones de SQL Server 2008 que se publicaron después de SQL Server 2008 Service Pack 1 se lanzaron revisiones de Microsoft SQL Server 2008 se crean para service packs de SQL Server específicos. Debe aplicar una revisión de SQL Server 2008 Service Pack 1 a una instalación de SQL Server 2008 Service Pack 1. De forma predeterminada, todas las revisiones que se proporcionan en un SQL Server Service Pack se incluyen en el siguiente SQL Server Service Pack.

SQL Server 2008 Service Pack 2

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

2289254 actualización acumulativa 1 para SQL Server 2008 Service Pack 2Note Como las compilaciones son acumulativas, cada nueva versión de corrección contiene todas las revisiones y todas las correcciones de seguridad que se incluyeron con la corrección de SQL Server 2008 anterior. Le recomendamos que considere la posibilidad de aplicar la corrección más reciente que contiene esta revisión. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

2402659 las compilaciones de SQL Server 2008 que se publicaron después de SQL Server 2008 Service Pack 2 se publicó

SQL Server 2008 Service Pack 2

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

2467239 paquete de actualización acumulativa 2 para SQL Server 2008 Service Pack 2Note Como las compilaciones son acumulativas, cada nueva versión de corrección contiene todas las revisiones y todas las correcciones de seguridad que se incluyeron con la versión anterior de corrección de SQL Server 2008. Microsoft recomienda que considere la posibilidad de aplicar la corrección más reciente que contiene esta revisión. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

2402659 Las compilaciones de SQL Server 2008 que se publicaron después de SQL Server Service Pack 2 de 2008 se publicaron revisiones de Microsoft SQL Server 2008 se crean para Service Pack de SQL Server específicos. Debe aplicar una revisión de SQL Server 2008 Service Pack 2 a una instalación de SQL Server 2008 Service Pack 2. De forma predeterminada, todas las revisiones que se proporcionan en un SQL Server Service Pack se incluyen en el siguiente SQL Server Service Pack.

SQL Server 2008 R2

La corrección para este problema se publicó por primera vez en la actualización acumulativa 4. Para obtener más información sobre 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:

2345451 paquete de actualización acumulativa 4 para SQL Server 2008 R2 Nota Como las compilaciones son acumulativas, cada nueva versión de corrección contiene todas las revisiones y todas las correcciones de seguridad que se incluyeron con la versión de corrección de SQL Server 2008 R2 anterior. Le recomendamos que considere la posibilidad de aplicar la corrección más reciente que contiene esta revisión. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

981356 Compilaciones de SQL Server 2008 R2 que se publicaron después de SQL Server 2008 R2

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".

Referencias

Para obtener más información sobre las funciones Determinista y Nondeterministic, visite el siguiente sitio web de Microsoft Developer Network (MSDN):

Información general sobre funciones deterministas y no dendterminas Para obtener más información sobre el procedimiento almacenado sp_createstats, visite el siguiente sitio web de MSDN:

Información general sobre el procedimiento almacenado transact-SQL "sp_createstats" Para obtener más información sobre las columnas calculadas, visite el siguiente sitio web de MSDN:

Información general sobre columnas calculadas Para obtener más información sobre el modelo de mantenimiento incremental para SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

935897 Un modelo de servicio incremental está disponible en el equipo de SQL Server para entregar revisiones para problemas detectados

Para obtener más información sobre el 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:

822499 Nuevo esquema de nomenclatura para los paquetes de actualización de software de Microsoft SQL Server Para obtener más información sobre la terminología de actualización de software, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

824684 Descripción de la terminología estándar que se usa para describir las actualizaciones de software de Microsoft