REVISIÓN: el mensaje de error "Error grave en el comando actual" cuando utiliza el Freetexttable o la función Containstable en una vista indizada en una consulta CTE en SQL Server 2008 o en SQL Server 2008 R2

Se aplica a: SQL Server 2008SQL Server 2008 R2Microsoft SQL Server 2008 Service Pack 2

Microsoft distribuye Microsoft SQL Server 2008 o Microsoft SQL Server 2008 R2 corrige 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 que se incluyeron con la anterior de SQL Server 2008 o SQL Server 2008 R2.

Síntomas


Suponga que tiene una instancia con nombre de Microsoft SQL Server 2008 o en Microsoft SQL Server 2008 R2 instalado en un servidor. Cuando ejecuta una consulta de expresión de tabla común (CTE) utiliza el Freetexttable o se produce un error en la función Containstable en una vista indizada, la consulta de la CTE y se produce una excepción de infracción de acceso. Además, aparece un mensaje de error similar al siguiente:
Msj 0, nivel 11, estado 0, línea 0 un error grave en el comando actual. Los resultados, si los hay, deben descartarse.
Por ejemplo, se produce la excepción de infracción de acceso cuando se ejecuta el código siguiente:
WITH CTE AS  (select [Key] as Key, [Rank] from FREETEXTTABLE(< indexed view name >, *, '< search string >'))  SELECT * FROM CTE  

Solución


Información de actualización acumulativa

SQL Server 2008 Service Pack 2

La solución a este problema en primer lugar se publicó en la actualización acumulativa 4 para SQL Server 2008 Service Pack 2. 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:
2527180 Paquete de actualización acumulativa 4 para SQL Server 2008 Service Pack 2
Nota: Como las compilaciones son acumulativas, cada versión de correcció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. Microsoft recomienda que considere la posibilidad de aplicar la versión más reciente de revisión que contenga este hotfix. Si desea obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
2402659 Compilaciones de SQL Server 2008 que se publicaron después del lanzamiento de SQL Server 2008 Service Pack 2
Las revisiones de Microsoft SQL Server 2008 se crean para determinados service Pack de SQL Server. Debe aplicar un hotfix de SQL Server 2008 Service Pack 2 a una instalación de SQL Server 2008 Service Pack 2. De forma predeterminada, cualquier hotfix suministrada en un service pack de SQL Server se incluye en el próximo service pack de SQL Server.

SQL Server 2008 R2

La corrección para este problema en primer lugar se publicó 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:
2345451 Paquete de actualización acumulativa 4 para SQL Server 2008 R2
Nota: Como las compilaciones son acumulativas, cada versión de correcció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 R2. Le recomendamos que considere aplicar la versión más reciente de revisión que contenga este hotfix. Si desea 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 del lanzamiento de SQL Server 2008 R2

Solución alternativa


Para resolver este problema, utilice uno de los métodos siguientes:
  • Utilizar una vista, una tabla temporal o una variable de tabla en lugar de una CTE para almacenar los resultados intermedios.
  • Actualizar la consulta para usar una tabla derivada o una subconsulta. Esto elimina la necesidad de usar una CTE.

Estado


Microsoft ha confirmado que se trata de un problema de los productos de Microsoft recogidos en la sección "Se aplica a".

Referencias


Para obtener más información acerca de cómo utilizar expresiones de tabla comunes, visite el siguiente sitio Web de Microsoft:Para obtener más información acerca de la función Freetexttable (Transact-SQL), visite el siguiente sitio Web de Microsoft: Para obtener más información acerca de la función Containstable (Transact-SQL), visite el siguiente sitio Web de Microsoft: Para obtener más información acerca de cómo crear vistas indizadas, visite el siguiente sitio Web de Microsoft: 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:
935897 Un modelo de servicio Incremental 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 de la 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 utilizada para describir las actualizaciones de software de Microsoft