ダウンタイムなしで本番サーバーのSQLServerトランザクションログを削減するために可能な最善のソリューションを知りたいですか?
データベースの完全バックアップ-トランザクションログをコミットする必要があるのはどれですか? (Exchange Serverのように?)
実稼働時間中にSSMSから次のT-SQLスクリプトを手動で実行しますか?
------------------------------------------------------------- --------------------------------- -OttoR。Radke-http:// ottoradke .com -情報:データベースのトランザクションログを縮小するT-SQLスクリプト。以下に -データベース名を設定してスクリプトを実行すると、 -トランザクションログが縮小されます。 ------------- -------------------------------------------------- --------------- ------------------------------ ------------------------------------------------ -トランザクションを実行しているデータベースの名前で以下の行を更新します -縮小するログ。 --------------- -------------------------------------------------- - - - - - - - 使用する - - - - - - - - - - - - - -------------------------------------------------- - -この行より下は何も変更しないでください。 --------------------------- -------------------------------------------------- - GO -変数を宣言します DECLARE @SqlStatement as nvarchar(max) DECLARE @LogFileLogicalName as sysname -データベースを次のように変更します単純なリカバリ SET @SqlStatement = 'ALTER DAT ABASE '+ DB_NAME()+' SET RECOVERY SIMPLE ' EXEC(@SqlStatement) -変更されていることを確認します SELECT [name]、[recovery_model_desc] FROM sys .databases WHERE [name] = DB_NAME() -ログファイル名変数を設定します SELECT @LogFileLogicalName = [Name] FROM sys.database_files WHERE type = 1 -ログファイルを縮小します DBCC Shrinkfile(@ LogFileLogicalName、1) -データベースをFULLに戻します SET @SqlStatement = 'ALTER DATABASE' + DB_NAME()+ 'SET RECOVERY FULL ' EXEC(@SqlStatement) -完全に戻されていることを確認します SET @SqlStatement =' SELECT [name]、[recovery_model_desc] FROM '+ DB_NAME ()+ '。sys.databases WHERE [name] =' '' + DB_NAME()+ '' '' EXEC(@SqlStatement) ---------- -------------------------------------------------- ------------------
では、これらの方法の違いと目的は何ですか?
どんな助けでも大歓迎です。
ありがとう。
ポイントインタイムリカバリにログバックアップを使用していますか?そうでない場合、ログファイルを管理する1つの方法は、リカバリモデルをシンプルに設定し、SSMSからデータベースを手動で縮小することです(データベースを右クリック...タスク...縮小...データベース)。これにより、データベースファイルが縮小されます。 Simple Recoveryモデルは、ログをインラインに保つ必要があります。