web-dev-qa-db-ja.com

SQL Server 2016クエリストアが原因の問題

SQL Server 2016(Standard)をAzureでテストしており、VMで問題が発生しています。

SQLログにSQLExceptionsとeventid 1001が表示され、これは15分ごとに発生します。

 2016-06-30 15:20:45.83 spid43s *** C:\ Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\LOG\SQLDump2693.txt 
に送信されるスタックダンプ2016-06-30 15:20:45.83 spid43s SqlDumpExceptionHandler:プロセス43が致命的な例外c0000005 EXCEPTION_ACCESS_VIOLATIONを生成しました。 SQL Serverはこのプロセスを終了しています。
 2016-06-30 15:20:45.83 spid43s * ************************** ************************************************** *** 
 2016-06-30 15:20:45.83 spid43s * 
 2016-06-30 15:20:45.83 spid43s *スタックダンプの開始:
 2016-06- 30 15:20:45.83 spid43s * 06/30/16 15:20:45 spid43 
 2016-06-30 15:20:45.83 spid43s * 
 2016-06-30 15:20 :45.83 spid43s * 
 2016-06-30 15:20:45.83 spid43s *例外アドレス= 00007FF9796D4BB2 Module(sqlmin + 0000000000064BB2)
 2016-06-30 15:20:45.83 spid43s *例外コード= c0000005 EXCEPTION_ACCESS_VIOLATION 
 2016-06-30 15:20:45.83 spid43s *アドレス0000000000000948 
の読み取り中にアクセス違反が発生しました

データベースでクエリストアを有効にしており、データフラッシュ間隔を15分に設定しています。

クエリストアをオフにすると、これらの例外が停止したように見えます。

SQL Server(Developer Edition)のローカルインストールでこの問題は発生していません。

Azureとローカルマシンのデータは同じで、どちらもビルド13.0.1601.5です。

4
Simon Foster

これは、StandardおよびExpressのQuery Storeでの 既知のバグ でした。

EnterpriseおよびDeveloper以外のエディションでは、自動データクリーンアップが失敗します。その結果、データが手動でパージされない場合、クエリストアで使用される領域は、構成された制限に達するまで、時間の経過とともに増加します。緩和されない場合、クリーンアップを実行しようとするたびにダンプファイルが生成されるため、この問題はエラーログに割り当てられたディスク領域をいっぱいにします。クリーンアップのアクティブ化期間は、ワークロードの頻度によって異なりますが、15分以内です。

回避策は、クリーンアップポリシーをオフにし、クエリストアデータを手動でクリアすることです。

すべてのクエリストアデータをクリアするには

ALTER DATABASE <database name> SET QUERY_STORE CLEAR

データを選択的にクリアする

sp_query_store_reset_exec_stats

sp_query_store_remove_plan

sp_query_store_remove_query

この問題はSQL Server 2016の累積的な更新1で最初に修正されました:

SQL Server 2016のEnterpriseおよびDeveloperエディション以外のエディションでQuery Storeの自動データクリーンアップが失敗します (KB 3178297)

11
Bob Klimes