c# - 有没有办法检查谁执行查询?
问题描述
我在 Azure 上有数据库。在每天的 Query Performance Insights 中,我在前 5 个长期运行的查询中得到相同的查询。是SELECT Id FROM MyTable
查询。
我认为这可能是我的代码,所以我添加Include
了包含MyTable
查询的记录(使用 EF,没有延迟加载)。但这无济于事。
也查过存储程序,也没有运气(找不到MyTable
可以用的地方)。
我能找到可以在我这边调用这个 SELECT 查询的地方吗?
我可以从中sys.query_store_plan
获取 query_plan,但这对我没有多大帮助。
解决方案
通过此页面 ,您似乎应该能够在 Azure 数据库上运行跟踪。假设有适当的过滤选项,它可能会帮助您确定查询的来源或至少在它运行时。(免责声明:我没有个人经验)
如果您想知道哪些对象可能正在使用该表,您可以查看 insys.sql_dependencies
或 in sys.sql_modules
。前者更容易查询,但由于部署对象的顺序和/或动态 SQL 的使用,可能会丢失依赖关系。后者在那个部门有更好的机会,但它有点像黑客,可能会给出误报。
SELECT Object_Name(object_id) FROM sys.sql_dependencies WHERE referenced_major_id = Object_Id('<table name>')
SELECT Object_Name(object_id) FROM sys.sql_modules WHERE definition LIKE '%<table name>%'
推荐阅读
- javascript - 从 HTML 结构中的 DIV 树中获取上层元素
- binary-search-tree - 使用数组的 bst 表示的优势
- python - 更改最接近 Numpy 数组中某个值的 n 个元素的符号
- magento-2.3 - 如何解决“我们发现有冲突的组件依赖项”。贝宝更新?
- java - elasticsearch后端离线时如何处理Hibernate Search启动
- r - 使用ggplot2的堆叠区域图的颜色问题
- angular - 表单显示有效,即使不满足所需的验证,“下一步”按钮也不会被禁用
- python - 从 git 存储库中的 requiremets.txt 文件安装包
- c# - C# 将 Double 从 DataGridView 转换为字符串
- angular - 如何在 *ngFor Angular 结构中将数据从父组件传递给子组件