2016-12-09 32 views
2

大量の生産データベースがあり、長年にわたって蓄積したインデックスを整理しようとしています。スペースを取り戻す。しかし、私は既存のインデックスを削除/無効にできません。それらはすべてクラスタ化されていませんが、以下のエラーで失敗を無効にしてテーブルをロックすると、5分間実行した後に文がキャンセルされます。ビジー状態の運用データベースでクラスタ化されていないインデックスを無効にすると、ロック要求のタイムアウト時間を超過しました(エラー:1222)

Lock request time out period exceeded. (Microsoft SQL Server, Error: 1222)

私は非常に明白な何かが欠けていると確信していますが、私は印象の下にあった非クラスタ化インデックスはメタデータだけですのではすばやく簡単にドロップする必要があります。

ETA - フォローアップの質問 - 手動でテーブルをManagement Studioにロックする方法はありますか?

+0

あなたをブロックしているものを見つけるためにsp_who2を使ってみてください。 – pacreely

答えて

0

RDBMSのバージョンについては言及していませんでしたが、MS SQL SERVER 2012を前提とすると、テーブルにロックを持たないONLINEのDROPインデックスは、hereのようにクラスタ化インデックスに対してのみ許可されます。

あなたは、インデックスを削除しようとしている誰かがテーブルを使用しているので、ロック・タイムアウトが発生しました。私はあなたが頼りになるテーブルに誰かがアクセスしないでインデックスを削除できると思う:

Table locks are applied and the table is unavailable for the duration of the index operation.

+0

SQL 2008であり、オンラインは非クラスタ化インデックスのオプションではありません –

関連する問題