有什么方法可以检查谁执行查询吗?

时间:2018-11-29 14:05:50

标签: c# sql entity-framework azure database-performance

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

我认为这可能是我的代码,因此我添加了Include来将来自MyTable的记录包括到查询中(使用EF,无延迟加载)。但这无济于事。

还检查了存储过程,但没有运气(找不到可以使用MyTable的地方)。

我可以找个可以在我这边叫这个SELECT查询的地方吗?


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

1 个答案:

答案 0 :(得分:0)

this page进行操作,看来您应该能够在Azure数据库上运行跟踪。假设使用适当的过滤选项,它可能会帮助您确定查询的来源或运行时间。 (免责声明:我对此没有经验)

如果您想知道哪些对象正在使用该表,则可以在sys.sql_dependenciessys.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>%'
相关问题