首页 > 解决方案 > 有没有办法检查谁执行查询?

问题描述

我在 Azure 上有数据库。在每天的 Query Performance Insights 中,我在前 5 个长期运行的查询中得到相同的查询。是SELECT Id FROM MyTable查询。

我认为这可能是我的代码,所以我添加Include了包含MyTable查询的记录(使用 EF,没有延迟加载)。但这无济于事。

也查过存储程序,也没有运气(找不到MyTable可以用的地方)。

我能找到可以在我这边调用这个 SELECT 查询的地方吗?


我可以从中sys.query_store_plan获取 query_plan,但这对我没有多大帮助。

标签: c#sqlentity-frameworkazuredatabase-performance

解决方案


通过此页面 ,您似乎应该能够在 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>%'

推荐阅读