現象
たとえば次のようなシナリオを考えてみます。
- ALTER INDEX を実行した場合... Microsoft SQL Server 2012 または SQL Server 2014 でのオンライン クエリ。
- このクエリは、デッドロックが発生しているか、ユーザーが開始したアクション (kill コマンドの実行やクエリのキャンセルなど) により中止されます。
このシナリオでは、インデックス メタデータを使用する必要がある DML 操作はブロックされるか、完了までに時間がかかります。
さらに、次の現象が発生することがあります。
- sys.dm_os_wait_statsおよびsys.dm_exec_requests動的管理ビュー (DMV) に対してクエリを実行するときの、PWAIT_MD_RELATION_CACHEまたはMD_LAZYCACHE_RWLOCK待機の種類の昇格した値
- sys.dm_os_spinlock_stats DMV SOS_RWクエリを実行するときの待機の種類の昇格した値
この問題は通常、すべての新しい DML クエリが同期オブジェクトをゆっくりとクリアするときに発生するロック コンボイとして発生します。 同期オブジェクトは待機状態であるため、通常は CPU 使用率が制限されます。
解決策
累積的な更新プログラムの情報
この問題は、次の SQL Server の累積的な更新プログラムで最初に修正されました。
SQL Server 2014 用の累積的な更新プログラム 1 /en-us/help/2931693
SQL Server 2012 SP1 の累積的な更新プログラム 9 /en-us/help/2931078
SQL Server 用の累積的な更新プログラムについて
SQL Server 用の新しい累積的な更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 SQL Server の最新の累積的な更新プログラムを確認してください。
修正プログラムの情報
マイクロソフトでは、この問題を修正する修正プログラムを提供しています。 ただし、この修正プログラムは、ここで説明する問題のみを修正することを目的としたものです。 この修正プログラムは、ここで説明する問題が発生しているシステムにのみ適用してください。
修正プログラムがダウンロード可能な場合は、このサポート技術情報の上部に「修正プログラムのダウンロードが利用可能」セクションがあります。 このセクションが表示されていない場合は、Microsoft カスタマー サービス & サポート にリクエストを送信し、修正プログラムを入手してください。
注: 別の問題が発生した場合、またはトラブルシューティングが必要な場合は、別のサービス リクエストを作成しなければならない場合があります。 この特定の修正プログラムの対象とならない追加のサポートに関する質問と問題には、通常のサポート料金が適用されます。 マイクロソフト カスタマー サービス サポートの電話番号一覧を参照、または別のサービス リクエストを作成するには、次のマイクロソフト Web サイトを参照してください。
/contactus/?ws=support 注: [修正プログラムのダウンロードが利用可能] フォームには、修正プログラムを使用できる言語が表示されます。 使用している言語が表示されない場合は、その言語の修正プログラムが存在しないことになります。
重要: この修正プログラムを適用した後、ALTER INDEX ... オンライン クエリは、SQL Server のパフォーマンスを低下させることなく中止できます。
回避策
この問題を回避するには、メタデータ エントリをフラッシュして、ロック コンボイと、クエリのパフォーマンスを低下させる潜在的な再コンパイル サイクルを防ぐことができます。 これを行うには、次のいずれかの方法を使用して、メタデータ エントリをフラッシュします。
- SQL Server 2012 または SQL Server 2014 のインスタンスを再起動します。
- 問題のあるデータベースをオフライン状態にしてから、再びオンラインにします。
状態
Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。