开发人员环境数据库服务器是SqlServer 2005(开发人员版)
有没有办法确保我的SQL查询将在SqlServer 2000中运行?
此数据库设置为兼容级别“SQL Server 2000(80)”,但在开发系统中无问题运行的某些查询无法在测试服务器(SqlServer)中运行。
(问题似乎在子查询中)
答案 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)
如果Collaterals-table没有列LOAN_NUMBER,则使用Loans-table。