SQL Serverトランザクションログファイ
プライマリトランザクションログファイルは削除できませんが、SQL Serverでセカンダリログファイルを削除できます。
ログファイルがいっぱいになっているため、回避策として別のディスクに2番目のログファイルを作成することがあります。
これらの一時的なセカンダリログファイルを時間の経過とともに削除しないと、ログファイル数が増加します。
最初のログファイルがあるディスクに空き領域がある場合、またはこの最初のログファイルを十分な領域を持つ別のディスクに移動すると、これらの一時的なセカンダリログファイルを削除できます。
第二のログファイルがデータベースに追加される方法を確認するには、記事”第二のログファイルをデータベースに追加する方法”を読むことができます。
データベースの復旧モデルが完全復旧モデルの場合は、トランザクションログをバックアップすることをお勧めします。 そのため、ログのバックアップ後にトランザクションログファイルが自動的に切り捨てられ、トランザクションログが大きくなりすぎないようにします。
復旧モデルとトランザクションログの詳細については、次の記事を参照してください。
“データベース回復モデルとは何ですか”,
“SQL Serverトランザクションログとは何ですか”,
“SQL Serverトランザクションログを縮小する方法”
削除する前に空のセカンダリトランザクションログファイル
トランザクションログをバックアップした後、削除するログファイルを空のオプションで縮小する必要があります。
まず、データベースを右クリックし、タスク->縮小->ファイルをクリックします。
以下に示すように、[ファイルの種類]セクションから[ログ]オプションを選択します。
ファイル名から縮小したいファイルを選択します。
アクションの縮小セクションでは、”同じファイルグループ内の他のファイルにデータを移行して空のファイル”も選択します。
このようにして、ログファイル内のデータを他のログファイルに転送することができます。
Okをクリックする前に、左上の”スクリプト”をクリックしてスクリプトを見てみましょう。 これにより、次のようなスクリプトが出力されます。
1
2
3
4
|
使用
移動
DBCC SHRINKFILE(N’Testdb_Log2′,EMPTYFILE)
移動
|
セカンダリトランザクションログファイルを削除
データベースを右クリックし、プロパティをクリッ
左側の「ファイル」タブに移動し、「データベースファイル」セクションから削除するログファイルを選択し、右下の「削除」ボタンをクリックします。 最後に、上部の”スクリプト”をクリックして、セカンダリログファイルの削除スクリプトを取得します。
これにより、次のようなスクリプトが出力されます。
1
2
3
4
|
USE
GO
ALTER DATABASE REMOVE FILE
GO
|
次のようにこれら2つのスクリプトを組み合わせることで、ログファイルを削除できます。
1
2
3
4
5
6
|
使用
GO
DBCC SHRINKFILE(N’Testdb_Log2′,EMPTYFILE)
GO
ALTER DATABASE REMOVE FILE
GO
|
セカンダリログファイルを削除した後、しばらくの間データベースから削除されていないように見えることがあります。 心配しないで、これは正常です。 しばらくすると通常の状態に戻ります。
Author: dbtut
We are a team with over 10 years of database management and BI experience. Our Expertises: Oracle, SQL Server, PostgreSQL, MySQL, MongoDB, Elasticsearch, Kibana, Grafana.