3

7ギガ近くを占めるデータベースがあります。テーブルの使用状況を見ると、40 MB のように、それよりもはるかに少ないはずです。昨日削除した大きなログ テーブルがありましたが、データベースはまだ非常に大きいと言っています。

統計は次のとおりです。

database_name   database_size   unallocated space
Umbraco_Indoorpower 6911.56 MB  859.59 MB

reserved    data    index_size  unused
31144 KB    26272 KB    3240 KB 1632 KB

私はこれを実行しました:

DBCC SHRINKDATABASE (umbraco_indoorpower, 99);

これにより、データベースが 2.3 ギガにまで減少しました。それにしても大きすぎる。

database_name   database_size   unallocated space
Umbraco_Indoorpower 2302.44 MB  1.63 MB

reserved    data    index_size  unused
30016 KB    26200 KB    3240 KB 576 KB

昨日削除したログテーブルからすべてのスペースを解放していないと思います。実際に走っdelete from tblLogた。多分それはそれについての間違った方法でした。

より多くのスペースを解放する方法を知っている人はいますか?

4

4 に答える 4

7

ログファイルの大きさはどれくらいですか?あなたの回復モデルは何ですか?database_size上記の数が7GB近くのログであり、データが非常に少ない可能性があります。ハードドライブ上のファイルを検索します-次を使用してパスを見つけることができます:

EXEC umbraco_indoorpower..sp_helpfile;

LDFは巨大で、MDFは実際には小さいと思います。この場合、おそらく完全復旧モデルであり、ログバックアップを作成したことがありません。これが当てはまる場合は、次のように実行できます。

USE umbraco_indoorpower;
GO
BACKUP LOG umbraco_indoorpower TO DISK = 'C:\some_path\umbraco.trn';
GO
DBCC SHRINKFILE(umbraco_indoorpower_log, 20); -- guessing on target MB size here

(単純なリカバリモデルを使用している場合、上記は失敗しますが、ログファイルが大きい理由は他にもあります。たとえば、実行時間の長いトランザクションやコミットされていないトランザクションなど、削除はコミットされましたか?)

次に、(a)ログファイルの最適な再利用に役立つ完全/差分/ログバックアップを含む適切なメンテナンスを設定するか、(b)単純なリカバリに切り替えます。この場合、ログはそれ自体を管理します。 。

ほとんどの場合、単純なリカバリでは災害が発生した場合に十分な保護が提供されませんが、それはあなたが決定するためのものです。

それまでの間、ファイルを必要なだけ縮小できますが、リカバリモデルとトランザクションの処理をそのままにしておくと、ファイルが再び大きくなり、明日、shrinkコマンドを実行することになります。これはあなたのファイルにとって絶対に恐ろしいことです。これが、「縮小操作を実行する」などの回答に反対する理由です。私はここで理由について話します:

于 2012-04-25T18:38:59.060 に答える
1

http://www.brentozar.com/archive/2009/08/stop-shrinking-your-database-files-seriously-now/

いずれにせよ、データとログがあり、ログを縮小するには、バックアップを作成する必要があります。

編集:アーロンが言ったことすべて

于 2012-04-25T18:39:23.420 に答える
1

既存の答えはすでにかなり良いです。追加の解決策が1つあります。データを含むデータベースのスクリプトを作成し(SSMS UIを使用すると、これを簡単に実行できます)、新しいデータベースでスクリプトを実行します。

単純なログモデルに切り替えることもできます(完全なログモデルを使用する特別な必要がない場合)。1つ確かなことは、フルモードで実行できず、適切なトランザクションログ管理ができないことです。

于 2012-04-25T19:39:42.557 に答える
0

SQL Server でより多くのスペースを占有する可能性のあるもう 1 つの要素は、Service Broker キューです。私の場合、17GBを占めるキューに600万行あります...

于 2015-02-19T04:43:10.693 に答える