0

结论

你不能。微软在这篇名为“了解 SQL Azure 上的过程缓存”的文章中明确指出:“您不能从缓存中手动删除执行计划” 。

原始问题

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

但是,我正在寻找一种从Azure. 有什么方法可以删除单个执行计划Azure吗?也许使用查询而不是DBCC

4

1 回答 1

2

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

如果您的执行计划仅与几个表/一个表相关,并且如果您也可以删除这些表的缓存,那么您可以更改表,添加一个非空列并删除该列。这将强制刷新缓存..

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

我不明白为什么服务器版本的 Azure 上的 SQL 在这方面会有所不同。

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

于 2018-03-27T06:31:12.890 回答