是否可以从 Azure SQL 数据库的缓存中删除单个执行计划?

Is it possible to delete a single execution plan from cache on Azure SQL DB?

结论

你不能。 Microsoft 明确声明:"you cannot manually remove an execution plan from the cache" in this article called 'Understanding the Procedure Cache on SQL Azure'.

原题

在 SQL 服务器上,可以使用 [DBCC FREEPROCCACHE(plan_handle varbinary(64))][1] 从缓存中删除单个执行计划。有不同[documentation about DBCC FREEPROCCACHE on SQL Azure][2]。它似乎从所有计算节点和/或控制节点(无论这些节点是什么,我不知道)中删除了所有缓存的执行计划。我不明白为什么服务器版本的 SQL on Azure 在这方面会有所不同。

但是,我正在寻找一种方法来从 Azure 上的缓存中删除单个执行计划。有没有办法删除 Azure 上的单个执行计划?也许使用查询而不是 DBCC?

无法从缓存中删除单个执行计划。

如果您的执行计划只与少数 tables/one table 相关,并且如果您也同意删除那些 table 的缓存,那么您可以更改 table ,添加一个非空列并删除 column.This 将强制刷新缓存..

更改 table 的架构会导致涉及的 table 缓存刷新(不是单个计划,所有计划)

I do not understand why SQL on Azure of the Server version would differ in this aspect.

这与作为产品提供的数据库有关,为您提供了一个数据库(这可能在具有多个数据库的某些服务器中)并且一些 dbcc 命令会影响整个实例,因此它们有点禁止所有 DBCC commands.There 是一个名为 Managed instance 的新产品(与本地服务器相同,但具有 Azure 数据库的高可用性),您可能还想检查一下