SqlServer 2000兼容性

时间:2008-11-27 11:20:45

标签: sql sql-server sql-server-2000

开发人员环境数据库服务器是SqlServer 2005(开发人员版)

有没有办法确保我的SQL查询将在SqlServer 2000中运行?

此数据库设置为兼容级别“SQL Server 2000(80)”,但在开发系统中无问题运行的某些查询无法在测试服务器(SqlServer)中运行。

(问题似乎在子查询中)

3 个答案:

答案 0 :(得分:2)

兼容性级别旨在以相反的方式工作 - 允许旧版本的T-SQL代码无需修改即可在较新版本的SQL Server上运行。这些更改通常涉及T-SQL语法和保留字,并且可以在兼容级别80中的数据库的索引中使用SQL Server 2005功能(如INCLUDED列)。但是,您不能使用2005 T-SQL功能,如CROSS适用。

您最好的选择是针对SQL Server 2000实例开发/测试所有代码。请注意,您可以使用2005的Management Studio连接到SQL Server 2000实例,因此您无需关注工具。

答案 1 :(得分:0)

问题解决了:

在相关子查询中,您必须(在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)

答案 2 :(得分:0)

您应该始终明确定义所有字段,否则在出错并写入

时不会出错
SELECT * FROM Loans WHERE EXISTS (SELECT * FROM Collaterals WHERE LOAN_NUMBER=Loans.LOAN_NUMBER)

如果Collat​​erals-table没有列LOAN_NUMBER,则使用Loans-table。