3

开发者环境db server为SqlServer 2005(开发者版)

有什么方法可以确保我的 SQL 查询将在 SqlServer 2000 中运行?

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

(问题似乎在子查询中)

4

3 回答 3

3

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

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

于 2008-11-27T11:45:14.480 回答
0

问题解决了:

在相关子查询中,您必须(在 SQL2000 中)显式定义外部字段。

SQL2005:

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

SQL2000:

SELECT * FROM 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 回答