SQL Server 2008データベースのトランザクションログを切り捨てる方法を教えてください。


9

SQL Server 2008データベースのトランザクションログを切り捨てる方法を教えてください。

可能な最善の方法は何ですか?

私は次のようにブログからこれを試しました:

1)データベースの設定から単純な回復、ファイルの圧縮、そして完全な回復の設定に至るまで、実際には貴重なログデータが失われており、特定の時点に復元することはできません。それだけでなく、後続のログファイルを使用することもできなくなります。

2)データベースファイルまたはデータベースを縮小すると、断片化が追加されます。

できることはたくさんあります。最初に、ログを切り捨てて頻繁に失うのではなく、次のコマンドを使用して適切なログバックアップを開始します。

BACKUP LOG [TestDb] TO  DISK = N'C:\Backup\TestDb.bak'
GO

ファイルを縮小するコードを削除します。適切なログバックアップを行っている場合、ログファイルは通常(通常、特殊なケースは除外されます)大きくなりません。


2
OK、それを試したときに何が起こりましたか?

回答:


4

データベースが完全復旧モードの場合にログファイルを切り捨てる最も安全で正しい方法は、トランザクションログバックアップを実行することTRUNCATE_ONLYです(これはを使用せずに実行します。これは将来のリリースでは非推奨となり、お勧めできません)。

後でログファイルを縮小したいようですが、その場合はDBCC SHRINKFILE(yourTLogName)コマンドを実行します。要求されたサイズに縮小するためのオプションの2番目のパラメーターがあります。


8

ログをnullデバイスにバックアップできます。

backup log [databasename] to disk = 'nul';

または、復旧モデルをシンプルに切り替えてから、再びフル/バルクに戻すこともできます。


これはdbasツールボックスのツールであり、あなたの答えは反対票に値しないので、私はこれについて+ 1をしました。私はトランザクションログのバックアップを取ることが最善の方法であるという意見に同意しますが、良いツールはすべて正しい方法でも悪い方法でも使用できます。
MartinSjöberg、2013年

6

ログデータを気にせず、単に削除したい場合:

復旧モデルを完全から単純に変更してから、完全に戻します。TRUNCATEONLY引数を指定したDBCC SHRINKFILEを使用してファイルを縮小する

次のコマンドは、復旧モデルを完全から単純に変更します

ALTER DATABASE <databse_name> SET RECOVERY SIMPLE

次のコマンドは、復旧モデルを完全に変更します

ALTER DATABASE <databse_name> SET RECOVERY FULL

ログファイルの名前を見つけるには、次のクエリを使用できます。

SELECT name 
FROM sys.master_files
WHERE database_id = DB_ID('<databse_name>')

ファイルを縮小する

DBCC SHRINKFILE (N'<logical_file_name_of_the_log>' , 0, TRUNCATEONLY)

SQL Serverログファイルを切り捨てるコマンドは何ですか?を参照してくださいこの詳細については

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.