FIX「非明け渡さスケジューラ」エラーと SQL Server が表示される SQL Server 2014 2016 2017 で応答を停止

適用対象: SQL Server 2016 DeveloperSQL Server 2016 EnterpriseSQL Server 2016 Enterprise Core

現象


Microsoft SQL Server 2014、2016、またはインストールされている 2017 を使用するいると仮定します。 1 つまたは複数の以下の問題が発生する可能性があります。

  • SQL Server のインスタンスが応答を停止が表示され、「非明け渡さスケジューラ」エラーが発生します。回復するサーバーを再起動する必要があります。
  • トランザクションのロールバックを完了するのには時間がかかる場合があります。インスタンスを再起動するとほとんどの場合は、ロールバックよりもずっと速く回復するデータベースをことができます。ロールバックが完了すると、再起動する前に、ロールバックの監視の詳細については下の「関連情報」セクションを参照してくださいに長い時間をかかることがあります多くの理由があることに注意してください。
  • SOS_OBJECT_STORE などのスピンロックの高い待機を参照してください可能性があります。

解決策


SQL Server の次の累積的な更新プログラムでこの問題を解決するとします。

       2017 の SQL Server 用の累積的な更新プログラム 9

       SQL Server 2016 SP2 用の累積的な更新 2

SQL Server のサービス パックの情報

この更新プログラムは、SQL Server の次の service pack で修正します。

2014 の SQL Server のサービス パック 3

詳細情報


ロールバックでは次の理由で実行時間の長いトランザクション、低速な I/O など、トランザクション ログ ファイルの Vlf の数が多いなどの長い時間がかかることができます多くの理由があります。 この資料に記載された問題が低速のロールバックの根本的な原因であることを確認するために、ロールバック ・ オペレーションの進行状況を監視する次の手法を使用することをお勧めします。

  • Sys.dm_exec_requestsからのコマンドは、「KILLED またはロールバック」に設定され、セッションが進行状況を示す IO と CPU の両方の時間を蓄積していること確認 session_id を識別します。IO に変化がないと、この資料に記載された問題が発生していることを示す値がある可能性があります。
  • Sys.dm_tran_database_transactions次のようなクエリを使用してロールバックの現在の状態を識別するクエリ。
​ ​

CurrentTime、として選択の getdate() database_transaction_next_undo_lsn,database_transaction_begin_lsn,t.transaction_id,database_transaction_begin_time,database_transaction_log_record_count,db_name(t.database_id)

Sys.dm_tran_database_transactions t から

Sys.dm_exec_requests s への参加します。   T.transaction_id=s.transaction_id に

場所 t.database_id=db_id ('<データベース名') と s.session_id= <Session_id をロールバック ・ オペレーションを実行する >

:

上記のクエリでは、

database_transaction_next_undo_lsnは、元に戻す、次のレコードの LSN です。database_transaction_begin_lsnは、トランザクション ・ ログ内のトランザクションの開始レコードの LSN です。

このクエリの各スナップショットには、 database_transaction_next_undo_lsnを小さく必要があります。Database_transaction_next_undo_lsnが database_transaction_begin_lsn に達すると、ロールバックが正常に完了します。

ここでの目的は、事前に指定された間隔内で前のクエリのいくつかのスナップショットを取得しその間隔内で、 database_transaction_next_undo_lsnで処理された Lsn のデルタを使用して推定所要時間を推定するために、database_transaction_next_undo_lsn database_transaction_begin_lsnに到達するにかかる時間です。

各スナップショットの間でまともな速度でロールバックが進行中で場合、は、SQL Server インスタンスを再起動することがなく独自に完了する、ロールバックが許可されることをお勧めします。

長時間のリカバリの詳細については以下の資料を参照してください。

状態


マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

関連情報


Microsoft がソフトウェア更新プログラムを説明するために使用される用語について説明します。