- PR -

DBのトランザクションログの切捨てと圧縮

1
投稿者投稿内容
のだ
会議室デビュー日: 2006/07/11
投稿数: 13
投稿日時: 2006-10-26 09:46
DBのトランザクションログの切捨てと圧縮に関して質問です。

現在SQLServer2000SP4を使用しているのですがDBのトランザクションログが増えすぎて切捨て・圧縮行いたいと思っています。その際に、圧縮に最適なファイルサイズを指定したいと思います。

DBCC shrinkfile (トランザクションログファイル名 , ファイルサイズ )
を実行した時に現在のログのサイズより大きいファイルサイズを指定すると

「データベースをxxページに圧縮することは出来ません、xxページしかありません。」

というエラーが出ます。
ファイルサイズを現在のファイルサイズに近い値に指定した場合は

「要求されたサイズ(xxKB)が最後の論理ログファイルの開始位置よりも大きいので、ログファイル2(トランザクションログファイル名)を圧縮できません。」

というエラーが出ます。
このコマンドを実行する前に
backup log DB名 with truncate_only
でログの切捨てを行っているのですが、論理ログファイルの開始位置とは何のことなのでしょうか?
この場合、圧縮が失敗しても次回圧縮を行った時にログが増えていれば正常に行われるのでしょうか?

基本的な質問で申し訳ございません。
よろしくお願いします。
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-10-26 12:13
こんにちは。

勘ですが、まず CHECKPOINT を走らせてから BACKUP LOG と DBCC SHRINKFILE を実行してみてください。

引用:

論理ログファイルの開始位置とは何のことなのでしょうか?


Books Online の トランザクション ログ アーキテクチャ が参考になるはずです。
_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for VSTO (Jul 2008 - Jun 2009)
Hello Another World!
.NET 勉強会 / ヒーロー島
のだ
会議室デビュー日: 2006/07/11
投稿数: 13
投稿日時: 2006-10-26 14:50
checkpointを実行してみてからDBCC shrinkfile を実行してみましたが、変わりませんでした。
また、checkpointを実行した後にbackup log DB名 with truncate_only も実行してみましたが、結果は変わりませんでした。

トランザクションログの切捨てはログの前の方から行われて、実行時にアクティブなログは後ろの方に残っていてそこがちょうど圧縮サイズと同じくらいになるとログがあるから圧縮できないという事なのでしょうか?
1

スキルアップ/キャリアアップ(JOB@IT)