tlogが4.5GBに増えたデータベースがあります。dbは完全リカバリモードであり、DBCCシュリンクファイルと組み合わせていくつかのトランザクションログバックアップを試しました。そしてそれは縮まないでしょう。誰かアイデアはありますか?
ステータスが=2のトランザクションがいくつかありますが、データベースにアクティブなトランザクションはありません。なぜまだstatus=2で表示されるのだろうか。
tlogが4.5GBに増えたデータベースがあります。dbは完全リカバリモードであり、DBCCシュリンクファイルと組み合わせていくつかのトランザクションログバックアップを試しました。そしてそれは縮まないでしょう。誰かアイデアはありますか?
ステータスが=2のトランザクションがいくつかありますが、データベースにアクティブなトランザクションはありません。なぜまだstatus=2で表示されるのだろうか。
トランザクションログの内容に実際に興味がない場合は、コマンドを実行します
BACKUP LOG dbname WITH NO_LOG
次に、DBCCSHRINKFILEを実行します
編集:2008年にそれらが削除されたことに気づいていませんでした-私たちはただそれに切り替えているだけです。2008年には、リカバリモデルを一時的にシンプルに設定してから、DBCC SHRINKFILEを実行してから、リカバリモデルを再びフルに戻す必要があります。ここにコード:
http://www.uhleeka.com/blog/2009/08/sql-2008-shrink-log-file-size-with-no_lo/
次のいずれかを使用している可能性があります。
他にもいくつかの可能性がありますが、このkbの記事では、考えられる理由のほとんど/すべてと、それらが何であるか/どこで/何であるかを判断する方法について、このkbの記事とこのkbの記事(この最後の記事)からの追加の優れた情報とともに概説しています。少し時代遅れですが、ほとんどはまだ適用されます)。
DBCC OPENTRAN
オープントランザクションを取得するために使用最後に、本当に行き詰まっている場合は、アタッチ/デタッチしてログファイルを削除することを検討します。しかし、これはあなたが必死になっている場合のみです...
SQLの場合は、データベースの完全バックアップを取り、トランザクションログをバックアップしてから、データベースを縮小します。何らかの理由で、ログを切り捨てる前に完全バックアップを作成するのが好きです。ディファレンシャルで逃げることができるかもしれませんが、最初の部分が機能するかどうかを確認してください。
別のリンクサーバーからデータベースに書き込むジョブがありました。それはいくつかの巨大な削除を行っていました。そのジョブを最適化し、ログファイルを100MBまで正常に縮小することができました。
ありがとう!
私の場合、データベースはそのようには見えませんでしたが、レプリケーション用にマークされていました。
次のコマンドを実行するとレプリケーションがクリアされ、shrinkfileコマンドは期待どおりに機能しました。
1)sp_replicationdboption'DatabaseName'、'publish'、'false'
2)sp_replicationdboption'DatabaseName'、'mergepublish'、'false'
3)sp_removedbreplication'データベース名'