現象
既定では、Microsoft SQL Server 2016 および 2017 の tempdb データベースに対して間接チェックポイントが有効になっています。 負荷の高い状況では、"非生成スケジューラ" エラーが発生する可能性があり、sys.dm_os_spinlock_stats DMV では、DP_LISTスピンロックの種類に対する昇格されたスピンロックの競合が表示されます。
解決方法
この修正プログラムは、次の更新プログラムとサービス パックに含まれています。
-
SQL Server 2016 Service Pack 1 の累積的な更新プログラム 5
-
SQL Server 2016 の累積的な更新プログラム 8
SQL Server 2016 のサービス パック情報
ビルドSQL Serverについて
SQL Serverの各新しいビルドには、前のビルドにあったすべての修正プログラムとセキュリティ修正プログラムが含まれています。 SQL Serverの最新の累積的な更新プログラムをインストールすることをお勧めします。
サービス パックは累積的です。 Service Pack は累積的であり、 最新の Service Pack には新しい修正プログラムと共に、それ以前の Service Pack に含まれていたすべての修正プログラムが含まれています。 このサービス パックの最新の Service Pack と最新の累積的な更新プログラムを適用することをお勧めします。 最新のサービス パックをインストールする前に、以前のサービス パックをインストールする必要はありません。 最新の Service Pack と最新の累積的な更新プログラムの詳細については、次の記事の表 1 を参照してください。
回避策
この問題を回避するには、次のいずれかのデータ定義言語 (DDL) ステートメントを使用して、tempdb データベースの間接チェックポイントをオフにします。
これは次のように行う必要があります。
-
modeldb データベースで (新しいデータベースの既定値も変更されます)、次のステートメントを実行しますALTER DATABASE [model] SET TARGET_RECOVERY_TIME = 0 MINUTES
-
または、次のステートメントを使用してSQL Server エージェントを使用してインスタンスが起動するたびに、tempdb データベース上で直接実行します。ALTER DATABASE [tempdb] SET TARGET_RECOVERY_TIME = 0 MINUTES
-
または、tempdbuse tempdb#x1 go
データベースに対して手動チェックポイントを定期的に発行します。さらに、TF 3468 を使用して tempdb の間接チェックポイントを無効にすることができます。
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
関連情報
Microsoft がソフトウェア更新プログラムの説明に使用する 用語について説明します。 更なる詳しい情報は以下の文献を参照してください: