2009-06-08 1 views
6

Я недавно нашел следующую статью:.обычны Table Expression (в КТР) доступны в SQL Server 2000

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

В статье не перечислить, какая версия сервера SQL это стало доступным в ли это работать в SQL Server 2000, и если не самая ранняя версия, в которой она может использоваться?

Обновление: Я попробовал быструю проверку, и тест не работает. Я прошу, чтобы он не работал в SS2000, чтобы убедиться, что это не я или моя настройка.

ответ

14

Общие выражения таблиц были введены в SQL Server 2005.

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

+0

Спасибо, за ссылку и ответ. –

+1

Также обратите внимание, что если по какой-либо причине вам нужно указать более низкий режим совместимости для вашей базы данных, тогда синтаксис, доступный в последних версиях, станет недоступным. Например, SQL Server 2005 не нравится старый синтаксис ansi-join, и если вы установите режим совместимости вашей базы данных на 8.0 (SQL Server 2000), то WITH-statements также станет недоступным для этой базы данных. –

+2

@ Lasse - Я привык к тому же, но это не так. Уровень совместимости не влияет на доступность синтаксиса. Проверьте это: CREATE DATABASE [CompatabilityTest] GO EXEC dbo.sp_dbcmptlevel @ имя_бд = N'CompatabilityTest», @ new_cmptlevel = 80 GO USE CompatabilityTest GO ; С MyCTE AS (SELECT FROM имя sys.databases) SELECT * FROM MyCTE –

2

Если вам нужна эта функциональность, это может быть хорошим способом, чтобы убедить руководство модернизировать.

+0

Мы обновили .... кроме того, что проект включен. Мы застряли из-за большого использования DTS. У нас нет ресурсов для замены пакетов DTS. Это глупо. –

+0

А затем прочитайте эту статью: http: //www.simple-talk.com/sql/sql-server-2005/dts-to-ssis-migration/ Есть инструменты, которые вы можете скачать для запуска и поддержки пакетов DTS из SQL Server 2005 или 2008. Мы используем их, поскольку у нас также есть сотни пакетов DTS, которые только медленно преобразуются в SSIS. – HLGEM

1

@ Аарон - вы сказали: «Уровень совместимости не влияет на доступность синтаксиса». На самом деле, я думаю, что это правда только иногда. То, что я видел с использованием базы данных уровня совместимости уровня 80 (SQL Server 2000) в SQL Server 2005, заключается в том, что доступен какой-то синтаксис, который является новым для SQL Server 2005, а другой нет. Например, как вы правильно отметили, CTE доступны. Однако оператором PIVOT нет. Таким образом (в моем маленьком опыте), похоже, зависит от конкретной синтаксической особенности. (Я бы опубликовал это под верхним ответом, но, по-видимому, этот сайт по дизайну требует, чтобы вы получили 50 баллов за репутацию, прежде чем отвечать на них в соответствующем нитке месте.)

0

Будьте осторожны с уровнями совместимости и CTE, они немного странно.

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

Работает на SQL Server 2005 уровень совместимости 80 (SQL Server 2000), но не совместимость уровня 90 (SQL Server 2005). Для уровня совместимости 90 правильно требуется точка с запятой перед с.

Как уже отмечалось ранее, SQL Server 2000 не поддерживает это вообще.

0

Выполнение SQL 2008 с уровнем совместимости, установленным в 80 и CTE, похоже, сработало. Настоящий причудливый. Не спрашивайте, почему у нас установлен уровень совместимости до 80 ... только что начался здесь.

Смежные вопросы