5

トランザクション ログ (.LDF) がデータベース ファイル (.MDF) の何倍も大きいデータベースがいくつかあります。

これらを自動的に縮小したり、大きくならないようにするにはどうすればよいですか?

4

9 に答える 9

6

それは仕事をするべきです

use master
go
dump transaction <YourDBName> with no_log
go
use <YourDBName>
go
DBCC SHRINKFILE (<YourDBNameLogFileName>, 100) -- where 100 is the size you may want to shrink it to in MB, change it to your needs
go
-- then you can call to check that all went fine
dbcc checkdb(<YourDBName>)

警告の言葉

ログをダンプするとトランザクション履歴が失われるため、適切なバックアップ戦略を必要としないテスト/開発データベースでのみ実際に使用します。ライブ システムでは、 Cade Rouxが推奨するソリューションを使用する必要があります

于 2008-10-02T16:08:50.600 に答える
4

トランザクション ログをバックアップして圧縮します。

DB が定期的にバックアップされ、チェックポイントで切り捨てられている場合、制御不能になることはありませんが、これらの間隔の間に多数 (サイズ) のトランザクションを実行している場合は、次のチェックポイントまで増加します。

于 2008-10-02T15:47:42.087 に答える
3

Enterprise Manager > All Tasks > Shrink Database でデータベースを右クリックします。

于 2008-10-02T15:47:36.033 に答える
2

DBCC SHRINKFILE.

2005年 はこちら。2000年はこちら。

于 2008-10-02T15:47:25.597 に答える
1

ここでは誰も言わなかったので、次のようにします。決してトランザクション ログを圧縮しないでください。これは、SQL Server の観点からは悪い考えです。

毎日のデータベース バックアップと毎時 (またはそれ以下) のトランザクション ログ バックアップを実行して、トランザクション ログを小さく保ちます。トランザクション ログのバックアップ間隔は、データベースのビジー状態によって異なります。

于 2008-10-03T15:05:32.073 に答える
0

もう 1 つの方法は、データベースの復旧モードをシンプルに設定することです (まだ設定されていない場合)。これにより、ログ ファイルが急速に大きくなるのを防ぐことができます。最近、トランザクション ログがいっぱいになり、トランザクションが許可されなくなるという問題が発生しました。

複数回答の圧縮ファイルと単純な復旧モードを組み合わせることで、ログ ファイルが妥当なサイズに保たれました。

于 2008-10-02T15:56:53.267 に答える
0

クエリ アナライザーの使用:

USE yourdabatase
SELECT * FROM sysfiles

次のようなものが見つかるはずです。

FileID    …  
1             1             24264    -1            1280      1048578               0             yourdabatase_Data    D:\MSSQL_Services\Data\yourdabatase_Data.MDF
2             0             128         -1            1280      66           0                             yourdabatase_Log      D:\MSSQL_Services\Data\yourdabatase_Log.LDF

ログ ファイルのファイル ID を確認します (ほとんどの場合、2 です)。チェックポイント コマンドを 2 ~ 3 回実行して、すべてのページをハード ドライブに書き込みます。

Checkpoint
GO
Checkpoint
GO

次のトランザクション コマンドを実行して、ログ ファイルを 1 MB にトランクします。

DUMP TRAN yourdabatase WITH no_log 
DBCC SHRINKFILE(2,1)  /*(FileID , the new size = 1 Mb)*/
于 2008-10-02T16:04:18.677 に答える
0

Here is what I have been Using

BACKUP LOG <CatalogName> with TRUNCATE_ONLY
DBCC SHRINKDATABASE (<CatalogName>, 1)
use <CatalogName>
go
DBCC SHRINKFILE(<CatalogName_logName>,1)
于 2008-10-02T16:34:35.903 に答える
-1

ここで見つけることができる sp_force_shrink_log を試して ください http://www.rectanglered.com/sqlserver.php

于 2008-10-02T15:48:12.520 に答える