我需要在此查询中应用查询提示(如NOWAIT
或NOLOCK
)CROSS APPLY
。我该怎么做:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT *
FROM sys.objects obj WITH (NOLOCK)
INNER JOIN sys.stats stat WITH (NOLOCK) ON stat.object_id = obj.object_id
CROSS APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) sp
我无权访问函数内容(出于显而易见的原因。)
我继续从问题中删除了repro,以使其更清楚。我不太关心重现阻塞的能力。(这也发生在客户环境和第 2548 期的第一响应者工具包中。)
据我所知,你不能。
一个人可能会尝试这样的事情:
...但是对于不是真实表格的东西,这将失败。
它也会失败,因为所需的提示是语义影响的。
如果您需要访问的东西没有响应设置隔离级别,您将不得不报告缺陷并希望得到修复。
有一个关于 DMV 和不尊重隔离级别的 Connect 项目,据我所知,官方的说法是不能保证系统功能的隔离级别。
亚伦伯特兰说:
此外,正如马丁·史密斯所说: