22

データベース '' のトランザクション ログがいっぱいです。ログ内のスペースを再利用できない理由を調べるには、sys.databases の log_reuse_wait_desc 列を参照してください。この問題を解決するために私を助けてください。前もって感謝します。

4

5 に答える 5

45

間違いなく、あなたは でデータベースを実行しておりFull Recovery Mode、トランザクション ログのバックアップを作成できませんでした。

SQL Server Manager でデータベースを右クリックし、[オプション] ページを確認します。復旧モデルを からFullに切り替えてからSimple、データベースをもう一度右クリックします。、 を選択Tasks ShrinkFilesます。ログ ファイルを適切なサイズに縮小します (通常、データ ファイルのサイズの 20 ~ 25% に固執します)。

に切り替えてFull Recovery Model、すぐにデータベースの完全バックアップを作成します。

次に、データベースを特定の時点に回復する機能が必要かどうかを判断する必要があります。その場合は、ビジネスの要件に応じて、定期的なトランザクション ログとおそらく差分バックアップをスケジュールします。

ビジネスが一定量のデータ損失に耐えることができる場合は、フル バックアップをスケジュールし、Simpleモードに切り替えます。

于 2012-11-16T21:12:29.227 に答える
16

最も可能性の高い答えは、ログ バックアップを実行する必要があるか、開いているトランザクションがあることです。

もう少しお役に立てれば…

サーバーで次のスクリプトを実行します。

-- last FULL backup
;with FULLBUs 
as (
    select d.name, max(b.backup_finish_date) as 'Last FULL Backup'
    from sys.databases d
        join msdb.dbo.backupset b
            on d.name = b.database_name
    where b.type = 'D'
    group by d.name
),

-- last LOG backup for FULL and BULK_LOGGED databases
LOGBUs
as (
    select d.name, max(b.backup_finish_date) as 'Last LOG Backup'
    from sys.databases d
        join msdb.dbo.backupset b
            on d.name = b.database_name
    where d.recovery_model_desc <> 'SIMPLE'
        and b.type = 'L'
    group by d.name
)

-- general overview of databases, recovery model, and what is filling the log, last FULL, last LOG
select d.name, d.state_desc, d.recovery_model_desc, d.log_reuse_wait_desc, f.[Last FULL Backup], l.[Last LOG Backup]
from sys.databases d
    left outer join FULLBUs f
        on d.name = f.name
    left outer join LOGBUs l
        on d.name = l.name
where d.name not in ('model', 'TempDB')
order by d.name

このクエリは、データベースの大まかな概要、データベースが使用している復旧モデル、ログがいっぱいになっている理由、最後に FULL および LOG バックアップが実行された時期を示します。

log_reuse_wait_descriptionとマークされた列を見てください。ほとんどの場合、BACKUPと表示されます。次に考えられる原因はTRANSACTIONです。

バックアップの場合は、次の情報があります。

基本的に、SIMPLE データベースの場合は、フル バックアップを毎日実行します。フル データベースの場合、フル バックアップを毎日実行し、ログ バックアップを 1 時間ごとに実行します。仕事を続けながらデータを失う能力に合わせて、LOG データベースの頻度を調整します。

バックアップを管理する最も簡単な方法は、Ola Hallengren のメンテナンス スクリプトを使用することです。彼のウェブサイトにアクセスして、それらを使用してみてください。

理由としてTRANSACTIONが表示される場合は、次のコマンドを実行してみてください。

dbcc opentran

そして、誰が未処理のトランザクションを持っているかを追跡します。

于 2012-11-16T21:02:04.703 に答える
0

データベース ノードを右クリック -> [タスク] -> [バックアップ] -> [全般] (タブ内) -> [バックアップの種類] を [トランザクション ログ] に設定 -> [OK] をクリックします。

于 2015-04-21T08:16:06.833 に答える
-1

データベース\プロパティ\ファイルを右クリックします。

ログ ファイルを含むデータベース ファイルを含むテーブルが作成されます。初期サイズを適切な量に拡張するだけです。

于 2014-01-28T08:25:56.967 に答える