首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查看DMV背后的SQL

如何查看DMV背后的SQL
EN

Stack Overflow用户
提问于 2021-03-27 07:32:11
回答 2查看 45关注 0票数 0

如何查看Server中DMV背后的SQL代码?

DMV提供了有用的统计数据,但是其中包含哪些表来获取数据呢?

例如:

代码语言:javascript
复制
SELECT * 
FROM sys.dm_exec_query_memory_grants

那么这个DMV使用的表是什么或者数据在哪里呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-27 15:47:53

您可以查询对象定义。

代码语言:javascript
复制
select object_definition(object_id('sys.dm_exec_query_memory_grants'))

但是,许多DMV(比如这个)公开了内部内存结构,实际上并不是构建在系统表之上的。

所以你能看到的就是

代码语言:javascript
复制
select .... FROM OpenRowset(TABLE DM_EXEC_QE_GRANTSINFO) A
票数 0
EN

Stack Overflow用户

发布于 2021-03-27 14:46:26

我知道得到你要求的最简单的方法是使用Redgate SQL提示符

它将为您提供所有系统视图的定义,尽管它不会对您有多大好处,因为它们使用的是您无法使用的内部服务器对象。

然而,作为一个例子,您上面引用的DMV被定义为

代码语言:javascript
复制
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 
go
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66829027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档