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