0

結論

それはいけません。Microsoftは、この記事「SQL Azure のプロシージャ キャッシュについて」で、「キャッシュから実行プランを手動で削除することはできません」と明示的に述べています。

元の質問

SQL Server では、 を使用して単一の実行プランをキャッシュから削除できます[DBCC FREEPROCCACHE(plan_handle varbinary(64))][1]。あります[documentation about DBCC FREEPROCCACHE on SQL Azure][2]。すべての計算ノードまたは制御ノードからすべてのキャッシュされた実行計画を削除するようです (それらのノードが何であれ、私にはわかりません)。SQLAzure のサーバー バージョンでこの点が異なる理由がわかりません。

ただし、上のキャッシュから単一の実行プランを削除する方法を探していAzureます。上の単一の実行計画を削除する方法はありますAzureか? たぶん、代わりにクエリを使用しますDBCCか?

4

1 に答える 1

2

単一の実行プランをキャッシュから削除する方法はありません。

実行計画が少数のテーブルまたは 1 つのテーブルのみに関連している場合、およびそれらのテーブルのキャッシュを削除しても問題ない場合は、テーブルを変更し、null 以外の列を追加して列を削除できます。これにより、強制的にフラッシュされますキャッシュ ..

テーブルのスキーマを変更すると、関連するテーブルのキャッシュ フラッシュ (単一のプランではなく、すべてのプラン) が発生します。

サーバー バージョンの Azure 上の SQL がこの点で異なる理由がわかりません。

これはオファリングとしてのデータベースに関係しています。データベースが提供され (これは複数のデータベースを持つ一部のサーバーにある場合があります)、一部の dbcc コマンドはインスタンス全体に影響するため、すべての DBCC コマンドを禁止しています。Managed と呼ばれる新しいオファリングがあります。インスタンス(オンプレミス サーバーと同じですが、Azure データベースの高可用性を備えています)、それも確認することをお勧めします。

于 2018-03-27T06:31:12.890 に答える