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

标签 sql sql-server sql-server-2005

所以我得到了一个精简后的 SQL 语句,看起来像这样:

SELECT column
FROM table t (nolock)
LEFT OUTER JOIN table2 (nolock) t2 on t.id = t2.id

此语句适用于我的 SQL 2005 和 SQL 2008 环境。它不适用于远程 SQL 2005 环境。我已将最后一行更改为:

LEFT OUTER JOIN table2 t2 (nolock) on t.id = t2.id

这适用于远程环境。

抛开 (nolock) 是否合适以及语法应保持内部一致的问题,您知道为什么会发生这种情况吗?我尝试搜索解决此问题的修补程序/知识库,但一无所获。 SQL Server 上是否有可能导致此行为的设置?

最佳答案

检查您的数据库兼容性级别。

此语法必须为 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'.

关于sql - SQL Server 上的 (nolock) 和表别名的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1194841/

相关文章:

sql - 创建在列的特定值上重置的排名

sql - 将最小日期和相应的金额返回到该不同的 ID

sql - 如何选择特定日期的行,忽略 SQL Server 中的时间

php - 改进查询运行时间(加载页面需要 20 秒以上)

mysql - 更改字符集后无法添加外键约束

mysql - Laravel 获取分配给我的用户的订单(具有分配历史记录)

sql - 仅在行尚不存在时插入行

.net - 登录前握手期间的 SqlException

sql - 使用格式文件在 SQL 中批量插入 csv 以删除双引号

sql - 从 VB.NET 调用存储过程的问题