2009-07-07 4 views
1

大きなテーブルを1つ持つSQL 2005データベースがあります。私は、テーブルからいくつかのアイテムを削除するためにDELETEを実行しました。私はそのスペースをOSに戻す必要があります。SQL 2005データベースからスペースを取り戻そうとしています

私は次のコマンドに

DBCC SHRINKDATABASE (MyDB, TRUNCATEONLY); 
DBCC SHRINKFILE (MyTable, TRUNCATEONLY); 

を試してみましたし、私もSHRINKコマンドは効果がなかったし、インデックスの再構築、データベースのサイズを増加させ、次のコマンド

ALTER INDEX [IX_Clustered] ON [dbo].[MyTable] REBUILD WITH (PAD_INDEX = ON, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF) 

でクラスタ化インデックスを再構築してきました35GB(データベースは1.5TB)です。

私は迷っています。未使用のデータベーススペースを取り戻すために何をする必要がありますか?

編集:ログファイルに問題はありません。メインデータベースの.MDFファイルが大きすぎます。

編集2:ここではの結果はMyTableという sp_spaceusedをされています

rows  reserved   data    index_size   unused 
----------- ------------------ ------------------ ------------------ ------------------ 
1031649352 1543899648 KB  1481718624 KB  54444664 KB  7736360 KB 

答えて

0

はあなたのログファイルのサイズを確認しましたか? テーブルがまだ/インデックスがまだ多くのスペースを占めているかどうかを確認するためにspaceusedを試しましたか?

+0

問題は発生しておらず、別のドライブにあります。 .MDFファイルのみが大きすぎます。 –

+0

OK - 空き領域を試しましたか?

テーブルが静止しているかどうか/インデックスがまだ多くの領域を占めているかどうかを確認しましたか? – Adamski

+0

私は今それを行い、その結果を質問に追加しました。 –

1

DBREINDEXを使用してインデックスを再作成し、統計情報を更新してから縮小してみてください。それは私のトリックでした。

DBCC DBREINDEX ('?', ' ', 80) 
GO 
EXEC sp_updatestats 
GO 
+0

また、UIからデータベースの縮小コマンドを試してみましたか? –

+0

DBCC DBREINDEX( '?'、 ''、80)コマンドは70GBの.​​MDFファイルの増加を引き起こし、失敗しました。( –

+0

これは有望ではありません:)置き換えましたか?あなたのテーブル名は? DBCC_DBREINDEXを使用して私のために働いた。大規模なデータベースからデータの90%を削除し、DBCC_DBREINDEXを実行してからTHENを縮小すると、そのデータサイズはどこにあるのかがわかりました。 –

0

LOBデータ、つまりTEXT、NTEXT、IMAGEまたはXMLのデータ型を削除しましたか?

LOBデータを削除した場合は、領域を再利用するために表を再構築する必要があることがあります。

実際にあなたの人物を見てみると、スペースの99%がデータ+インデックスに取り込まれています。あなたが再利用しようとしている空き領域はどこですか?

関連する問題