2

tlogが4.5GBに増えたデータベースがあります。dbは完全リカバリモードであり、DBCCシュリンクファイルと組み合わせていくつかのトランザクションログバックアップを試しました。そしてそれは縮まないでしょう。誰かアイデアはありますか?

ステータスが=2のトランザクションがいくつかありますが、データベースにアクティブなトランザクションはありません。なぜまだstatus=2で表示されるのだろうか。

4

6 に答える 6

1

トランザクションログの内容に実際に興味がない場合は、コマンドを実行します

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/

于 2009-11-12T00:48:31.997 に答える
1

次のいずれかを使用している可能性があります。

  • コミットされていないトランザクション
  • 孤立したトランザクション
  • 長時間実行される操作(インデックスのデフラグ/再構築、インデックスの作成、checkdb、長時間実行されるクエリなど)
  • レプリケーションを使用している場合、レプリケーションされていないトランザクション

他にもいくつかの可能性がありますが、このkbの記事では、考えられる理由のほとんど/すべてと、それらが何であるか/どこで/何であるかを判断する方法について、このkbの記事このkbの記事(この最後の記事)からの追加の優れた情報とともに概説しています。少し時代遅れですが、ほとんどはまだ適用されます)。

于 2009-11-12T02:35:47.333 に答える
1
  • DBCC OPENTRANオープントランザクションを取得するために使用
  • MDFの大きさはどれくらいですか?5GB以上の場合は、ログファイルを残します
  • おそらく、ログファイルは彼の大きなものである必要があります
  • それが成長すると、それは再び断片化します
  • PaulRandallのサイトをご覧ください。彼はたくさんのt-logコードを書きました...

最後に、本当に行き詰まっている場合は、アタッチ/デタッチしてログファイルを削除することを検討します。しかし、これはあなたが必死になっている場合のみです...

于 2009-11-12T06:25:20.003 に答える
1

SQLの場合は、データベースの完全バックアップを取り、トランザクションログをバックアップしてから、データベースを縮小します。何らかの理由で、ログを切り捨てる前に完全バックアップを作成するのが好きです。ディファレンシャルで逃げることができるかもしれませんが、最初の部分が機能するかどうかを確認してください。

于 2009-11-12T06:31:39.867 に答える
0

別のリンクサーバーからデータベースに書き込むジョブがありました。それはいくつかの巨大な削除を行っていました。そのジョブを最適化し、ログファイルを100MBまで正常に縮小することができました。

ありがとう!

于 2009-11-12T23:13:55.250 に答える
0

私の場合、データベースはそのようには見えませんでしたが、レプリケーション用にマークされていました。

次のコマンドを実行するとレプリケーションがクリアされ、shrinkfileコマンドは期待どおりに機能しました。

1)sp_replicationdboption'DatabaseName'、'publish'、'false'

2)sp_replicationdboption'DatabaseName'、'mergepublish'、'false'

3)sp_removedbreplication'データベース名'

参照:https ://social.msdn.microsoft.com/Forums/sqlserver/en-US/cc853b02-6f00-49d6-8419-9ad1cb9dbfb5/cant-detachdelete-migrated-db-mistakenly-marked-for-replication?forum = sqlreplication

于 2019-12-21T18:49:55.797 に答える