2009-06-08 12 views
6

Recientemente he encontrado el siguiente artículo:.Son de expresión de tabla común (CTE) disponible en SQL Server 2000

http://www.tsqltutorials.com/with-common-table-expressions.php

El artículo no enumera la versión del servidor SQL esto se hizo disponible en hace esto trabajar en SQL Server 2000 y, en caso negativo, ¿cuál es la versión más antigua en la que se puede usar?

Actualización: Intenté hacer una prueba rápida y la prueba no funciona. Estoy pidiendo que no funcione en SS2000 para garantizar que no sea yo o mi configuración.

Respuesta

14

expresiones de tabla comunes fueron introducidos en SQL Server 2005.

http://www.simple-talk.com/sql/sql-server-2005/sql-server-2005-common-table-expressions/

+0

Gracias, por el enlace y la respuesta. –

+1

También tenga en cuenta que si, por algún motivo, debe especificar un modo de compatibilidad inferior para su base de datos, la sintaxis disponible en las últimas versiones dejará de estar disponible. Por ejemplo, a SQL Server 2005 no le gusta la sintaxis ansi-join anterior, y si establece el modo de compatibilidad de su base de datos en 8.0 (SQL Server 2000), entonces las declaraciones WITH también dejan de estar disponibles para esa base de datos. –

+2

@Lasse - Solía ​​pensar lo mismo, pero ese no es el caso. El nivel de compatibilidad no afecta la disponibilidad de la sintaxis. Verifique: Crear base de datos [CompatabilityTest] IR EXEC dbo.sp_dbcmptlevel @ dbname = N'CompatabilityTest', @ new_cmptlevel = 80 GO USO CompatabilityTest GO ; CON MyCTE AS (seleccione el nombre desde sys.databases) SELECCIONAR * FROM MyCTE –

2

Si necesita esa funcionalidad, que podría ser una buena manera de convencer a la dirección de actualizar.

+0

Hemos actualizado .... excepto en el proyecto en el que estoy. Estamos estancados debido al uso intensivo de DTS. No tenemos los recursos para cambiar los paquetes DTS. Es estúpido. –

+0

Ah, entonces lea este artículo: http: //www.simple-talk.com/sql/sql-server-2005/dts-to-ssis-migration/ Hay herramientas que puede descargar para ejecutar y mantener paquetes DTS desde SQL Server 2005 o 2008. Los usamos ya que también tenemos cientos de paquetes DTS que solo se están convirtiendo lentamente a SSIS. – HLGEM

1

@ Aaron - dijiste: "El nivel de compatibilidad no afecta la disponibilidad de la sintaxis". En realidad, creo que eso solo es verdad algunas veces. Lo que he visto al utilizar una base de datos de nivel de compatibilidad 80 (modo SQL Server 2000) en SQL Server 2005 es que algunas sintaxis nuevas en SQL Server 2005 están disponibles, otras no. Por ejemplo, como ha señalado con razón, los CTE están disponibles. Sin embargo, el operador PIVOT no lo es. Entonces (en mi pequeña experiencia) parece depender de la característica sintáctica particular. (Publicaría esto debajo de la respuesta superior, pero aparentemente este sitio requiere 50 puntos de reputación antes de poder responder en la ubicación adecuada para el subproceso).

0

Tenga cuidado con los niveles de compatibilidad y CTE, son un poco extraño.

SELECT 1 a 
WITH A AS (SELECT 1 a) 
    SELECT 1 from A 

Se ejecuta en SQL Server 2005 nivel de compatibilidad 80 (SQL Server 2000), pero no el nivel de compatibilidad 90 (SQL Server 2005). El nivel de compatibilidad 90 correctamente requiere un punto y coma antes del con.

Como se señaló antes, SQL Server 2000 no admite esto en absoluto.

0

Ejecutar SQL 2008 con nivel de compatibilidad establecido en 80 y CTE parece funcionar. Real extraño. No pregunte por qué tenemos el nivel de compatibilidad establecido en 80 ... recién comenzado aquí.

Cuestiones relacionadas