SQL Server中怎么知道哪些表被访问过?
发布时间 - 2025-07-21 00:00:00 点击率:次要在sql server中查看某个数据库中哪些表被访问过,可以使用动态管理视图(dmv)来查询缓存的查询计划和相应的sql文本。以下是实现这个需求的详细步骤和代码:
首先,我们需要理解两个关键的动态管理视图:
sys.dm_exec_cached_plans:存储查询计划,类似于Oracle中的执行计划,通过复用来减少解析消耗,提高数据检索效率。
sys.dm_exec_sql_text:用于获取与查询计划关联的SQL语句文本。
通过这两个视图,我们可以构造一个查询来找出执行过的SELECT语句,从而了解哪些表被访问过。以下是具体的SQL代码:
SELECT p.refcounts, p.usecounts, sqltext.text
FROM sys.dm_exec_cached_plans p
CROSS APPLY sys.dm_exec_sql_text(p.plan_handle) sqltext
WHERE p.objtype IN ('Adhoc', 'Prepared')
AND p.cacheobjtype = 'Compiled Plan'
AND sqltext.text NOT LIKE '%sys%'
AND sqltext.text NOT LIKE '%fn_listextendedproperty%'
AND upper(sqltext.text) LIKE 'SELECT%'
AND upper(db_name(sqltext.dbid)) = @DatabaseNa
me
ORDER BY p.usecounts desc, p.refcounts desc;在这个查询中:
-
p.refcounts和p.usecounts分别表示引用计数和使用计数,帮助我们了解查询的使用频率。 -
sqltext.text显示具体的SQL语句文本。 -
WHERE子句用于过滤出我们感兴趣的查询类型和数据库。 -
@DatabaseName是你要查询的数据库名称,需要在执行时替换为具体的数据库名。
需要注意的是,这种方法有一些限制:
- 它只能显示缓存中的查询计划,受限于LRU(Least Recently Used)算法。如果数据库非常繁忙,可能只存储最近执行的查询。
- 它不提供审计功能,无法追踪历史访问记录,只能反映当前缓存状态。
如果你需要更全面的审计功能,可以考虑使用SQL Server的审计功能(SQL Server Audit),这类似于Oracle中的AUDIT功能,可以提供更细粒度的监控。
如果有其他更好的实现方案,欢迎私信分享!
# linux
# oracle
# sql语句
# red
# sql
# select
# 算法
# 数据库
# 的是
# 如果你
# 子句
# 在这个
# 你要
# 要在
# 感兴趣
# 我们可以
# 这两个
# 这类
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何实现模型的全局作用域?(Global Scope示例)
Python3.6正式版新特性预览
DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
详解jQuery中的事件
利用JavaScript实现拖拽改变元素大小
原生JS获取元素集合的子元素宽度实例
如何在万网利用已有域名快速建站?
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
如何快速查询网址的建站时间与历史轨迹?
如何正确下载安装西数主机建站助手?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
如何在万网自助建站中设置域名及备案?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
如何快速搭建高效WAP手机网站吸引移动用户?
Laravel观察者模式如何使用_Laravel Model Observer配置
Laravel如何使用Blade组件和插槽?(Component代码示例)
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
iOS验证手机号的正则表达式
如何为不同团队 ID 动态生成多个非值班状态按钮
大同网页,大同瑞慈医院官网?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
LinuxShell函数封装方法_脚本复用设计思路【教程】
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
JS中对数组元素进行增删改移的方法总结
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
javascript如何操作浏览器历史记录_怎样实现无刷新导航
如何在VPS电脑上快速搭建网站?
如何挑选高效建站主机与优质域名?
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
如何在服务器上配置二级域名建站?
如何快速搭建支持数据库操作的智能建站平台?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
如何在IIS管理器中快速创建并配置网站?
香港服务器如何优化才能显著提升网站加载速度?
新三国志曹操传主线渭水交兵攻略
如何快速启动建站代理加盟业务?
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
长沙企业网站制作哪家好,长沙水业集团官方网站?
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
Laravel定时任务怎么设置_Laravel Crontab调度器配置
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
Laravel如何处理表单验证?(Requests代码示例)


me
ORDER BY p.usecounts desc, p.refcounts desc;