如何查看Server中DMV背后的SQL代码?
DMV提供了有用的统计数据,但是其中包含哪些表来获取数据呢?
例如:
SELECT *
FROM sys.dm_exec_query_memory_grants那么这个DMV使用的表是什么或者数据在哪里呢?
发布于 2021-03-27 15:47:53
您可以查询对象定义。
select object_definition(object_id('sys.dm_exec_query_memory_grants'))但是,许多DMV(比如这个)公开了内部内存结构,实际上并不是构建在系统表之上的。
所以你能看到的就是
select .... FROM OpenRowset(TABLE DM_EXEC_QE_GRANTSINFO) A发布于 2021-03-27 14:46:26
我知道得到你要求的最简单的方法是使用Redgate SQL提示符
它将为您提供所有系统视图的定义,尽管它不会对您有多大好处,因为它们使用的是您无法使用的内部服务器对象。
然而,作为一个例子,您上面引用的DMV被定义为
create view sys.dm_exec_query_memory_grants as
select A.session_id, A.request_id, A.scheduler_id, A.dop, A.request_time, A.grant_time,
A.requested_memory_kb, A.granted_memory_kb, A.required_memory_kb, A.used_memory_kb, A.max_used_memory_kb,
A.query_cost, A.timeout_sec,
Convert(smallint, A.is_small) as resource_semaphore_id,
A.queue_id, A.wait_order, A.is_next_candidate, A.wait_time_ms,
A.plan_handle, A.sql_handle,
A.group_id, A.pool_id, A.is_small, A.ideal_memory_kb,
A.reserved_worker_count, A.used_worker_count, A.max_used_worker_count, A.reserved_node_bitmap
from OpenRowset(table DM_EXEC_QE_GRANTSINFO) a
gohttps://stackoverflow.com/questions/66829027
复制相似问题