'db'という名前のSQL Server 2008データベースのすべてのテーブルのインデックスを再編成したいと思います。私は次のコマンドを試します:
ALTER INDEX all ON db REBUILD
そして、私は次のエラーを受け取ります:
オブジェクト "db"は存在しないか、権限がないため、見つかりません
何が悪いのですか?
すべてのテーブルを実行するには:
EXEC sp_MSForEachTable 'ALTER INDEX ALL ON ? REBUILD'
上記のように、データベース内のすべてのテーブルを実行するステートメントはありません
ただし、これが不要な場合もあります。たとえば、読み取り専用テーブルや巨大なテーブルなどです。また、一部のテーブル/インデックスはほとんど断片化されません。
よりインテリジェントな方法は、最初に断片化をチェックしてから、再構築または再編成することです。一般的で広く使用されている例の1つは SQL Foolのスクリプト です。