web-dev-qa-db-ja.com

本当に.LDFファイルを保持する必要がありますか?

毎月、運用データベースの月末のスナップショットを作成しています。これらの月末のスナップショットは、レポート作成のみを目的としており、挿入、更新、削除は行われていません。これらの各スナップショットには、.MDFおよび.LDFファイルがあります。

.LDFファイルを削除して、サーバーの空き容量を増やしたいです。 .LDFファイルを保持する必要がある理由はありますか?

説明:

本番データベースは、別のシステムからのファイル抽出から毎晩再作成されます。本番データベースからのレポートのみです...更新は行われません。

夜間処理:
私が言えることから...
データベーステーブルは毎晩切り捨てられます
テーブルは一連の一括挿入ステートメントを介して入力されます
インデックスが再構築されます

ログファイルは削除しないでください。ログなしでデータファイルを再アタッチしようとすると、SQL Serverは技術的にそれを再作成できますが、データベースがデタッチされたときに開いているトランザクションがあった場合など、いくつかの潜在的な問題があります。その場合、データが完全に失われます。

スペースを消費し、ログファイルを削除しないでください。あなたはそれでトラブルを求めています。

トランザクションログに関するこの記事 、特に「ログの管理不良」の部分を参照してください。

16
Thomas Stringer

別の答え で述べたように、ログファイルを削除することはできません。あなたができることは、データベースをREAD_ONLYに設定することです。データベースがREAD_ONLYにある場合、変更は許可されず、ログファイルは拡張されません。ログファイルのサイズを最小サイズに減らし、最小の設置面積という目標を達成できます。 READ_ONLYにデータベースを設定するには、次のコマンドを実行します。

USE master;
GO
ALTER DATABASE databasename SET READ_ONLY;
GO

データベースを変更してREAD_WRITEに戻し、必要な変更を加え、必要なときにいつでもREAD_ONLYに設定できます。

ログファイルは、データベースのACIDプロパティを維持するために必要です。

9
jgardner04

実際には、mdfファイルを使用するだけでデータベースを作成できます。 sp_attach_single_file_db (Transact-SQL)コマンドです。 Microsoft SQL Serverの将来のバージョンでは削除されることに注意してください。しかし、LDFファイルを削除するのは賢明ではありません。サメは正解です。「あなたはそれについてトラブルを求めています」。別の観点-あなたのldfファイルは巨大ですか?もしそうなら、あなたはそれらについて何かをすることができます。

  1. データベースを Simple recovery model に設定します。これは、トランザクションをロールバックしたくない場合にのみ実行できます。
  2. MDFおよびLDFファイルを作成する代わりに、完全データベースバックアップ(.BAK)ファイルを作成します。これは、tnan MDF + LDFのサイズが小さくなります。
2