结论
你做不到。 Microsoft明确声明:"您无法从缓存中手动删除执行计划" in this article called 'Understanding the Procedure Cache on SQL Azure'
原始问题
在SQL Server上,可以使用[DBCC FREEPROCCACHE(plan_handle varbinary(64))][1]
从缓存中删除单个执行计划。有不同的[documentation about DBCC FREEPROCCACHE on SQL Azure][2]
。它似乎从所有计算节点和/或控制节点中删除了所有缓存的执行计划(无论这些节点是什么,我都不知道)。我不明白为什么服务器版本的Azure上的SQL
在这方面会有所不同。
但是,我正在寻找一种从Azure
缓存中删除单个执行计划的方法。有没有办法删除Azure
上的单个执行计划?也许使用查询而不是DBCC
?
答案 0 :(得分:1)
无法从缓存中删除单个执行计划。
如果您的执行计划只与几个表/一个表相关,并且如果您也可以删除这些表的缓存,那么您可以更改表,添加非空列并删除列。这将强制刷新缓存..
更改表的模式会导致所涉及的表的缓存刷新(不是单一计划,所有计划)
我不明白为什么服务器版本的Azure上的SQL在这方面会有所不同。
这与数据库作为产品有关,你提供了一个数据库(这可能在一些服务器上有多个数据库)和一些dbcc命令影响整个实例,所以它们有点禁止所有DBCC命令。有一个新的提供称为Managed instance(与内部服务器相同,但Azure数据库的可用性很高),您可能也想检查它