2009-06-08 12 views
6

Recentemente ho trovato il seguente articolo:.sono tavolo di espressione comune (CTE) disponibili in SQL Server 2000

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

L'articolo non elenca la versione di SQL Server questo è diventato disponibile in fa questo funziona in SQL Server 2000 e, in caso contrario, qual è la prima versione in cui è utilizzabile?

Aggiornamento: Ho provato un test rapido e il test non funziona. Sto chiedendo che non funziona in SS2000 per garantire che non sia io o il mio setup.

risposta

14

espressioni di tabella comuni sono state introdotte in SQL Server 2005.

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

+0

Grazie, per il collegamento e la risposta. –

+1

Si noti inoltre che se per qualsiasi ragione si deve specificare una modalità di compatibilità inferiore per il proprio database, la sintassi disponibile nelle ultime versioni non sarà più disponibile. Ad esempio, a SQL Server 2005 non piace la vecchia sintassi ansi-join e, se si imposta la modalità di compatibilità del database su 8.0 (SQL Server 2000), anche le istruzioni WITH diventano non disponibili per quel database. –

+2

@Lasse - Ero solito fare la stessa cosa, ma non è così. Il livello di compatibilità non influisce sulla disponibilità della sintassi. Check it out: CREATE DATABASE [CompatabilityTest] GO EXEC dbo.sp_dbcmptlevel @ dbname = N'CompatabilityTest', @ new_cmptlevel = 80 GO USO CompatabilityTest GO ; CON MyCTE AS (SELECT Nome FROM sys.databases SELEZIONA * DA MyCTE –

2

Se è necessario che la funzionalità, potrebbe essere un buon modo per convincere l'amministrazione per l'aggiornamento.

+0

Abbiamo aggiornato .... eccetto il progetto su cui sono attivo. Siamo bloccati a causa del pesante utilizzo di DTS. Non disponiamo delle risorse per modificare i pacchetti DTS. È stupido. –

+0

Ah leggi questo articolo: http: //www.simple-talk.it/sql/sql-server-2005/dts-to-ssis-migration/ Esistono strumenti che è possibile scaricare per eseguire e gestire pacchetti DTS da SQL Server 2005 o 2008. Li usiamo come anche noi abbiamo centinaia di pacchetti DTS che vengono lentamente convertiti in SSIS. – HLGEM

1

@Aaron - hai detto, "Il livello di compatibilità non influisce sulla disponibilità della sintassi." In realtà, penso che sia vero solo a volte. Quello che ho visto utilizzando un database di livello di compatibilità 80 (modalità SQL Server 2000) in SQL Server 2005 è che alcune sintassi nuove per SQL Server 2005 sono disponibili, altre no. Ad esempio, come hai giustamente osservato, le CTE sono disponibili. Tuttavia, l'operatore PIVOT non lo è. Quindi (nella mia piccola esperienza) sembra dipendere dalla particolare caratteristica sintattica. (Vorrei pubblicare questo sotto la risposta principale, ma a quanto pare questo sito per design richiede di ottenere 50 punti reputazione prima di poter rispondere nella posizione appropriata per il thread.)

0

Attenzione ai livelli di compatibilità e CTE, sono un po 'strano

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

eseguito su SQL Server 2005 livello di compatibilità 80 (SQL Server 2000), ma non a livello di compatibilità 90 (SQL Server 2005). Il livello di compatibilità 90 richiede correttamente un punto e virgola prima del con.

Come già indicato, SQL Server 2000 non supporta affatto questo.

0

L'esecuzione di SQL 2008 con livello di compatibilità impostato su 80 e CTE sembra funzionare. Reale bizzarro. Non chiedere perché abbiamo il livello di compatibilità impostato su 80 ... appena iniziato qui.

Problemi correlati