我的实验表明,Query Store 不会跟踪扩展存储过程。但是,它们各自都有各自的行为,我甚至不是扩展存储过程方面的初学者,而且我只尝试过几个。我寻求一种确定的方法来了解 Query Store 是否可以跟踪任何扩展存储过程。
下列任何一项是否存在?
- 查询存储根本无法跟踪任何扩展存储过程的架构原因(例如,我发现我尝试过的那些没有查询计划,但我不知道所有扩展存储过程是否都是如此)。
- 文档明确指出查询存储不跟踪任何扩展存储过程。我找不到任何文档。
- 证明查询存储可以跟踪至少一个扩展存储过程的代码。
简而言之,没有。
扩展存储过程与存储过程有很大不同。(名称相似令人遗憾。)
存储过程通常是 T-SQL 代码,通常对 SQL 数据库中的各种对象执行操作。这些操作是查询存储可以跟踪的。
另一方面,扩展存储过程通常用外部编程语言(例如 C 或 C++)编写。此类代码通常执行非 SQL 活动,通常以 DLL 中实现的函数形式执行。因此,这些活动不是查询存储可以跟踪的。
如果扩展存储过程的代码最终循环回到 SQL 数据库来执行某项操作,则查询存储最终可能会看到该操作。即便如此,这只是查询存储跟踪SQL 操作- 它不会跟踪扩展存储过程。
弃用说明:
用户创建的扩展存储过程已弃用。请参阅SQL Server 2016 (13.x) 中已弃用的数据库引擎功能。并从查询 SQL Server 中安装的扩展存储过程: