sql server 2008データベースログが大きすぎる解決方法

1969 ワード


環境:
データファイルmdfは22 G、ログファイルである.ldfは33 Gで、通常の方法でログファイルをクリアすると、エラーが発生します.
USE [master]
GO
ALTER DATABASE TestDB SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE TestDB SET RECOVERY SIMPLE --    
GO
USE CHIANG_SCM_DB
GO
DBCC SHRINKFILE (N'Test_log' , 5, TRUNCATEONLY) 


USE [master]
GO
ALTER DATABASE Test SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE Test SET RECOVERY FULL --       
GO

メッセージ5069、レベル16、ステータス1、1行目のALTER DATABASE文が失敗しました.メッセージ9002、レベル17、ステータス6、1行目のデータベース'TestDB'のトランザクション・ログがいっぱいです.ログ内のスペースが再利用できない理由を特定するにはsysを参照してください.databasesのlog_reuse_wait_desc列.
データファイルとログファイルはすべてとても良くて、移動しにくいため、その時ハードディスクの空間もあまり大きくなくて、そこでログファイルを削除するだけです.
この場合は必ず元のライブラリを保持しなければならない.mdfファイルは完璧です.条件により、複数のバックアップが可能になります.
SQL Serverのクエリー・アナライザで次の手順に従ってください.
データベース名をTestDBと仮定します(データベース名がTestDBでない場合は、次の文の対応するTestDBをデータベース名に変更する必要があります).
データベース名が元の名前と一致する空のライブラリを作成します.
コンソールを停止するサービスMSSQLSERVERは、データがある.mdfファイルをコピーして、既存の空のライブラリを上書きします.mdfファイル.
コンソールのサービスMSSQLSERVERを起動し、エンタープライズマネージャを開くと、データTestDBをクリックすると、エラーが表示されます.
masterデータベースでクエリー・アナライザを開き、次のコマンドを実行します.一つ一つ実行することに注意してください.
--データベースを緊急モードに変更
ALTER DATABASE TestDB SET EMERGENCY
--データベースをシングルユーザモードにする
ALTER DATABASE TestDB SET SINGLE_USER
--データベース・ログの再生成を修正します.このコマンドは、割当て、構造、論理整合性、およびすべてのデータベースのオブジェクト・エラーをチェックします.DBCC CHECKDDBコマンドパラメータとして「REPAIR_ALLOW_DATA_LOSS」を指定すると、レポートされたエラーがチェックされ、修正されます.しかし、これらの修復により、一部のデータが失われる可能性があります.
DBCC CheckDB(TestDB,REPAIR_ALLOW_DATA_LOSS)--これを実行すると、エラーが表示され、無視され、第4条を実行し続けます
--データベースをマルチユーザモードに戻す
ALTER DATABASE TestDB SET MULTI_USER
    5. データTestDBを更新して、この时にデータベースを出すのはすでにできて、各ノードの"+"号はすべて展開することができて、表もクエリーすることができて、表を建てることができて、データベースは使うことができます.
    6.データベース――右クリック――属性――ファイル、この時ログファイルの経路がどこにあるかを見ることができて、後でタイミングを決めて観察します.
 
データベース・ログが大きすぎるのを防ぐ最善の方法は、ログを定期的に表示し、ログを空にすることです.
同時にデータベースのバックアップを行います.