dポイントプレゼントキャンペーン実施中!

単純復旧モデルでは、データベースのバックアップを取得するとトランザクションログが切り捨てられるという認識で合っていますでしょうか?

また、ランザクションログが切り捨て方法は下のコマンドで合っていますでしょうか?

 ・dbcc shrinkfile(X,TRUNCATEONLY)
or
 ・BACKUP DATABASE (DB) TO DISK = 'NUL'

トランザクションログの増大で、ディスク圧迫しているので対策を検討しています。

A 回答 (1件)

単純復旧モデルでは、トランザクションがコミットされたタイミングで自動的に解放OKのフラグがつきます。


ですので、処理は不要です。
(また明示的に対応がありません)

完全復旧モデルでは、トランザクションログバックアップを実行すると解放されます。
フルバックアップではだめです。
dbcc shrinkfileは、自動拡張したファイルサイズを縮小するために使用します。
縮小できるのは、解放可能フラグがついている場合です。

イメージ的には、
トランザクションログファイルが1GB
長いトランザクションやトランザクションログバックアップをしなかったことで、ログファイルが2GBに自動拡張。
トランザクションログバックアップをして、2GBの内解放可能な領域を解放。
2GBを1GBに戻したいときにdbcc shrinkfileを実行となります。
    • good
    • 0
この回答へのお礼

ありがとうございます。
しかし、現在、大量のジョブが動いているのか、トランザクションログを開放してもすぐ逼迫してしまいます。
いろんな制限で、トランザクションログ領域の拡張やジョブを見直すことが難しい状況です。

よって、ある程度トランザクションログが貯まったら削除する方法を検討しています。

手動で明示的にトランザクションログの切り捨てを行う方法として下記コマンドが適切かなとご質問させて頂いた次第です。
 ・> dbcc shrinkfile(X,TRUNCATEONLY)
or
 ・> BACKUP DATABASE (DB) TO DISK = 'NUL'
> go
> dbcc shrinkfile(X)
> go

お礼日時:2015/07/05 13:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!