Совместимость с SqlServer 2000 - PullRequest
       14

Совместимость с SqlServer 2000

3 голосов
/ 27 ноября 2008

Сервер базы данных среды разработки - SqlServer 2005 (версия для разработчиков)

Есть ли способ убедиться, что мои SQL-запросы будут работать в SqlServer 2000?

Для этой базы данных установлен уровень совместимости "SQL Server 2000 (80)", но некоторые запросы, которые без проблем выполняются в системе разработки, не могут выполняться на тестовом сервере (SqlServer).

(похоже, проблема в подзапросах)

Ответы [ 3 ]

2 голосов
/ 27 ноября 2008

Уровни совместимости предназначены для работы противоположным образом - чтобы позволить более старой версии кода T-SQL работать без изменений в более новой версии SQL Server. Изменения обычно включают синтаксис T-SQL и зарезервированные слова, и можно использовать функции SQL Server 2005, такие как столбцы INCLUDED, в индексах базы данных на уровне совместимости 80. Однако нельзя использовать функции 2005 T-SQL, такие как CROSS ОТНОСИТЬСЯ.

Лучшим вариантом является разработка / тестирование всего кода на экземпляре SQL Server 2000. Обратите внимание, что вы можете использовать Management Studio 2005 для подключения к экземпляру SQL Server 2000, поэтому вам не нужно возвращаться назад в отношении инструментов.

0 голосов
/ 28 ноября 2008

Вы всегда должны явно определять все поля, иначе вы не получите ошибку, когда сделаете ошибку и напишите

SELECT * FROM Loans WHERE EXISTS (SELECT * FROM Collaterals WHERE LOAN_NUMBER=Loans.LOAN_NUMBER)

Если в таблице Collaterals нет столбца LOAN_NUMBER, вместо этого используется таблица Loans.

0 голосов
/ 27 ноября 2008

Проблема решена:

В коррелированных подзапросах необходимо (в SQL2000) явно определить внешнее поле.

SQL2005:

SELECT * FROM Loans WHERE EXISTS (SELECT * FROM Collaterals WHERE COLLATERAL_LOAN=LOAN_NUMBER)

SQL2000:

SELECT * FROM Loans WHERE EXISTS (SELECT * FROM Collaterals WHERE COLLATERAL_LOAN=Loans.LOAN_NUMBER)
...