https://www.brentozar.com/pastetheplan/?id=Bkg8vBVzb
这个查询到底来自什么?我认为它可能是sp_BlitzIndex
orsp_BlitzCache
但我搜索了它们并没有看到类似的东西(寻找像IgnoreDuplicateKeys
or的关键字spatial_indexes
)。当我搜索时,is_hypothetical
我同时找到了sp_BlitzIndex
Ola Hallengren's 和 Ola Hallengren's IndexOptimize
,但进一步的观察告诉我那些不是罪魁祸首,因为他们遗漏了这个流氓计划所具有的许多其他部分(比如spatial
和xml
东西)。
我注意到它是因为它每天执行超过 20k 次并且在我的监控工具中显示了很多等待时间,但它通常只显示凌晨 1 点到 7 点之间的等待时间,这有点接近我们的维护窗口......我只是不过,此时真的很困惑,因为我正在使用 Ola 的索引解决方案和偶尔的 ad-hoc alter index all on some_table rebuild
。
有任何想法吗?
现在您知道此查询的来源,接下来要采取的步骤将取决于您是否认为此过程至关重要。
如果我处在你的位置,我会设置一个不允许此连接进入的登录触发器,然后查看谁在抱怨或什么工具开始出错。只是一句警告,一个定义不当的登录触发器会让你的生活变得疯狂,但希望这个例子能解决问题。我根据这篇文章中的例子修改了一个不同的限制性触发器的例子:
如果您怀疑查询确实支持关键进程,我将开始联系在相关原始服务器上拥有配置文件的用户,并开始询问他们从那里使用的进程。
最后,如果您无法从用户那里识别出任何有用的信息,并且不想创建登录触发器,那么我会通过消除过程来追踪它。通过登录到发起此查询的服务器来启动此操作,然后慢慢停止任何看起来可疑的正在运行的服务(即services.msc),并查看/禁用任何可疑的 Windows 调度程序作业。最后我希望你关闭正确的进程并最终弄清楚发生了什么。
希望这能给您一些关于路线的想法。祝你好运,希望你能弄明白。
谜团已揭开!通过检查会话的登录、主机和程序名称属性,我们缩小了范围。它确实是一个 Windows 计划任务,调用一个 .Net 应用程序。
这个看起来特别难看的查询由 MS SMO(SQL 管理对象)提供,ScriptDB(.Net 应用程序)使用它来读取模式以导出到 SVN 存储库。具体来说,这部分似乎是“获取索引”类型的命令,尽管我没有更多的耐心/渴望深入研究代码并明确地将其绘制出来。所以无论如何,现在我们知道了!
PS:谢谢约翰!