gpt4 book ai didi

sql - 为什么在远程表调用上使用 NOLOCK 时需要 WITH?

转载 作者:行者123 更新时间:2023-12-04 04:52:27 27 4
gpt4 key购买 nike

今天我在尝试使用 NOLOCK 访问远程表时遇到了一个问题。 .我收到此错误:

Remote table-valued function calls are not allowed.

在谷歌搜索这个问题时,我发现添加 WITH (NOLOCK)纠正问题。我想知道这是为什么?

SQL:
SELECT *
FROM [LINKED_SRV].[DB1].[dbo].[REMOTE_TABLE] WITH (NOLOCK)

最佳答案

报价the documentation for table hints :

Important

Omitting the WITH keyword is a deprecated feature: This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

The following table hints are allowed with and without the WITH keyword: NOLOCK, READUNCOMMITTED, UPDLOCK, REPEATABLEREAD, SERIALIZABLE, READCOMMITTED, TABLOCK, TABLOCKX, PAGLOCK, ROWLOCK, NOWAIT, READPAST, XLOCK, and NOEXPAND. When these table hints are specified without the WITH keyword, the hints should be specified alone.


该文档指出,对于您尝试的查询,省略了 WITH关键字是允许的。基于此,我认为这是一个错误。但是,该文档还指出此功能已弃用,并将在 SQL Server 的 future 版本中删除,因此除了更改文档外,您不应期望以任何其他方式修复此错误。
我怀疑解析器看到 FROM server.database.schema.table (并决定这是对用户定义函数的调用,因此是一个错误,并且永远不会到达它看到 NOLOCK 的地步。不是函数参数。

关于sql - 为什么在远程表调用上使用 NOLOCK 时需要 WITH?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17242733/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com