3

開発環境の db サーバーは SqlServer 2005 (開発者版)

SQL クエリが SqlServer 2000 で確実に実行されるようにする方法はありますか?

このデータベースは互換性レベル「SQL Server 2000 (80)」に設定されていますが、開発システムでは問題なく実行される一部のクエリは、テスト サーバー (SqlServer) では実行できません。

(問題はサブクエリにあるようです)

4

3 に答える 3

3

互換性レベルは、逆に機能するように設計されています。つまり、古いバージョンの T-SQL コードが新しいバージョンの SQL Server で変更を加えることなく機能するようにします。通常、変更には T-SQL 構文と予約語が含まれ、互換性レベル 80 のデータベースのインデックスで INCLUDED 列などの SQL Server 2005 機能を使用することは可能です。ただし、CROSS などの 2005 T-SQL 機能は使用できません。申し込み。

最良のオプションは、SQL Server 2000 インスタンスに対してすべてのコードを開発/テストすることです。2005 の Management Studio を使用して SQL Server 2000 インスタンスに接続できるため、ツールに関して過去にさかのぼる必要はありません。

于 2008-11-27T11:45:14.480 に答える
0

問題が解決しました:

相関サブクエリでは、(SQL2000では)外部項目を明示的に定義する必要があります。

SQL2005:

SELECT * FROM Loans WHERE EXISTS(SELECT * FROM Collat​​erals WHERE COLLATERAL_LOAN = LOAN_NUMBER)

SQL2000:

SELECT * FROM Loans WHERE EXISTS(SELECT * FROM Collat​​erals WHERE COLLATERAL_LOAN = Loans.LOAN_NUMBER)
于 2008-11-27T14:04:37.587 に答える
0

すべてのフィールドを常に明示的に定義する必要があります。そうしないと、間違って記述したときにエラーが発生しません。

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

Collat​​erals-table に列 LOAN_NUMBER がない場合は、代わりに Loans-table が使用されます。

于 2008-11-28T06:47:39.557 に答える