SQL Server上的(nolock)和表别名的顺序

Mat*_*att 16 sql sql-server sql-server-2005

所以我有一个SQL语句,削减看起来像这样:

SELECT column
FROM table t (nolock)
LEFT OUTER JOIN table2 (nolock) t2 on t.id = t2.id
Run Code Online (Sandbox Code Playgroud)

此语句适用于我的SQL 2005和SQL 2008环境.它不在远程SQL 2005环境中.我已将最后一行切换为:

LEFT OUTER JOIN table2 t2 (nolock) on t.id = t2.id
Run Code Online (Sandbox Code Playgroud)

这适用于远程环境.

撇开(nolock)是否合适以及语法应该保持内部一致的问题,为什么会出现这种情况的任何想法?我试图搜索处理此问题的修补程序/知识库,但没有提出任何问题.SQL服务器上是否存在可能导致此行为的设置?

Qua*_*noi 9

检查数据库兼容级别.

它应该是90这种语法的工作原理.

刚检查过:

sp_dbcmptlevel 'test', 80

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

SELECT TOP 100 *
FROM master t (nolock)
LEFT OUTER JOIN master (nolock) t2 on t.id = t2.id

????????? 102, ??????? 15, ????????? 1, ?????? 3
Incorrect syntax near 't2'.
Run Code Online (Sandbox Code Playgroud)