4

MSDE (SQL 2000、サービス パック 4) で実行されているデータベースがあり、大量の余分なスペースが予約されています。各テーブルに sp_spaceused を使用すると、合計予約サイズが 2102560 KB、データ サイズが 364456 KB、未使用サイズが 1690760 KB になります (つまり、使用済みスペースのほぼ 4 倍を予約します)。最悪の原因は、頻繁に書き込まれるが決して削除されないテーブルです (トランザクション ログ)。一般に、削除は非常にまれであり、レコードのサイズと数の点で非常に小さいです。

ディスク上のデータベース ファイルは 2 GB の制限にあり、これがバックアップなどで問題を引き起こしています。

DBCC SHRINKDATABASE、DBCC SHRINKFILE、および DBCC REINDEX を試しましたが、ディスクで使用されるファイル サイズに影響はありませんでした

2 つの質問 - データベース ファイルのサイズを縮小するにはどうすればよいですか? また、SQL Server が余分な領域を予約しないようにするにはどうすればよいですか?

ありがとう

ポール

4

4 に答える 4

4

USE < DBNAME >
GO
BACKUP LOG < DBNAME > WITH TRUNCATE_ONLY
GO
DBCC SHRINKDATABASE ( < データベース名 > )
GO
DBCC SHRINKFILE (< ログファイル >, 5)
GO
DBCC SHRINKFILE (< データファイル >, 5)
GO

ファイル パスがわからない場合は、exec sp_helpfile

于 2009-09-02T15:50:09.430 に答える
0

Create separate files for worst culprits and place them in separate filegroups. Moving tables to another file itself will compress them. Will also make shrinkfile more effective. If needed you can create more then one file per table.

于 2009-09-02T16:08:36.287 に答える
0

すべての提案をありがとう。結局、新しい空のデータベースを作成し、大規模なデータベースからデータをコピーしてから、データベースの名前を変更する必要がありました。

予約サイズに注目です。うまくいけば、これを引き起こしたデータベースのセットアップに何か問題がありました. 同一のソフトウェア/MSDE を使用している他のお客様で、この問題が発生したことはありません。

于 2009-09-03T08:00:48.727 に答える
0

あなたができることは、データベースの完全なバックアップを取り、データベースのインデックスを再作成し、段階的に縮小してから、再度インデックスを作成することです。そうすれば、データベースが現在のサイズになります。

また、ログ テーブルを別のテーブルに移動する必要があります。

于 2009-09-02T15:37:12.450 に答える