代码之家  ›  专栏  ›  技术社区  ›  demo

有没有办法检查谁执行查询?

  •  0
  • demo  · 技术社区  · 7 年前

    我有蓝色的数据库。在每天的查询性能洞察中,我在前5个长时间运行的查询中得到相同的查询。它是 SELECT Id FROM MyTable 查询。

    我认为它可以是我的代码,所以我添加了 Include 包括来自的记录 MyTable 查询(使用ef,无延迟加载)。但这没用。

    也检查过存储程序,但也没有运气(找不到任何地方 迈特表 可以使用)。

    我可以找一个可以在我这边调用这个select查询的地方吗?


    sys.query_store_plan 我可以抓取查询计划,但这对我没什么帮助。

    1 回复  |  直到 7 年前
        1
  •  0
  •   deroby    7 年前

    走过 this page 似乎您应该能够在Azure数据库上运行跟踪。假设有适当的筛选选项,它可能会帮助您确定查询的来源,或者至少在查询运行时提供帮助。(免责声明:我没有个人经验)

    如果您想知道哪些对象可能正在使用该表,您可以查看 sys.sql_dependencies 或在 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>%'