11

SQL Server 2005 トランザクション ログの急速な増大を調査していたときに、sys.databases の "log_reuse_wait" 列が 0 に設定されている場合、トランザクション ログが正しく切り捨てられるだけであることがわかりました。これは、トランザクション ログが既存の領域を再利用することを妨げているものがないことを意味します。 .

ある日、ログ ファイルをバックアップまたは切り捨てようとしたときに、この列に 4、つまり ACTIVE_TRANSACTION が tempdb で実行されていることがわかりました。次に、DBCC OPENTRAN('tempdb') と sysprocesses の open_tran 列を使用して、開いているトランザクションをチェックしました。その結果、システムのどこにもアクティブなトランザクションが見つかりませんでした。

log_reuse_wait 列の設定は正確ですか? 上記の方法を使用しても検出できないトランザクションが進行中ですか? 明らかな何かが欠けているだけですか?

4

6 に答える 6

7

sys.databases の log_reuse_wait_desc 列に ACTIVE_TRANSACTION が表示された理由はまだわかりません - 実行中のトランザクションがなかったときですが、その後の経験では、tempdb の log_reuse_wait 列があまり明確ではない理由で変更されていることが示されています。私の目的は、あまり関係ありません。また、DBCC OPENTRAN、または「select open_tran from sysprocess」コードを実行すると、トランザクション情報を探すときに以下のステートメントを使用するよりもはるかに情報が少ないことがわかりました。

select * from sys.dm_tran_active_transactions

select * from sys.dm_tran_session_transactions 

select * from sys.dm_tran_locks
于 2008-12-02T18:47:05.627 に答える
3

ここに log_reuse_wait_desc がどのように機能するかについての説明があります:

また、log_reuse_wait_desc レポート メカニズムがどのように機能するかを理解する必要があります。前回ログの切り捨てが試行されたときに、ログの切り捨てが発生しなかった理由が示されます。これは混乱を招く可能性があります。たとえば、ACTIVE_BACKUP_OR_RESTORE が表示され、バックアップまたは復元操作が実行されていないことがわかっている場合、これは、ログの切り捨てが最後に試行されたときに実行されていたことを意味します。

したがって、あなたの場合、現在 ACTIVE TRANSACTION はありませんが、前回ログの切り捨てが試行されたときです。

于 2015-02-06T12:33:34.863 に答える
1

このビデオの参照リンクには、この問題のトラブルシューティングに役立つ追加のツール/参照へのリンクがいくつかあります:
SQL Server 2005 および 2008 ログ ファイルの管理

つまり、log_reuse_wait の情報は正確でなければなりません。どういうわけか見つけることができなかった停止または孤立したトランザクションがあった可能性があります。

于 2008-09-18T14:37:16.213 に答える
1

The Log File for Database is Fullからの私の回答:

データベースの完全バックアップを取得するとすぐに、データベースが単純復旧モデルを使用していない場合、SQL Server はデータベースで実行されたすべてのトランザクションの完全な記録を保持します。これにより、データ ファイルが失われる壊滅的な障害が発生した場合に、ログをバックアップすることで障害点まで復元できます。また、古いデータ バックアップを復元したら、ログを復元して失われたデータを再生できます。トランザクション。

この蓄積を防ぐには、トランザクション ログをバックアップする必要があります。または、 BACKUP LOGのTRUNCATE_ONLYまたはオプションを使用して、現時点でチェーンを切断できます。NO_LOG

この機能が必要ない場合は、復旧モデルをシンプルに設定してください。

于 2008-09-18T14:51:24.993 に答える
0

データはおそらく正確です。必要なことは、定期的なトランザクション ログのバックアップを作成することです。他のアドバイスに反して、2005 で NO_TRUNCATE オプションを使用しないでください。コミットされたトランザクションのログはクリアされますが、バックアップはされません。

NO_TRUNCATE オプションを指定した BACKUP LOG ステートメントを使用して、ログ末尾のバックアップを実行する必要があります。1 日を通して定期的なトランザクション ログも適用する必要があります。これにより、サイズをかなり扱いやすく保つことができます。

于 2008-12-02T15:16:12.700 に答える
-1

うーん、トリッキーです。sys.databases への質問が ACTIVE_TRANSACTION を引き起こしている可能性がありますか? ただし、その場合は、TEMPDB ではなく MASTER にある必要があります。

于 2008-09-18T10:49:34.203 に答える