2016-08-08 5 views
3

アプリケーションで問題が発生しているオープントランザクションを保持している多くのスリープセッションが発生しているので、私はSET-OPTION XACT_ABORT ONを試しています。SQL Sever 2008のロールバックカウント数

オプションを反転すると効果があるかどうかを測定する方法はありますか? 私は一日あたりのロールバック数を考えています。どうすればこれらを集めることができますか?

私はです。SQL Server 2008 SP4です。

答えて

2

データベースが完全復旧Model.Youである考慮すると、一日あたりに撮影したすべてのトランザクションログバックアップを組み合わせて、それを照会することができます...

SELECT 
CASE 
WHEN OPERATION='LOP_ABORT_XACT' THEN 'COMMITS' 
ELSE 'ROLLBACKS' END AS 'OPERATIONS' 
,COUNT(*) AS CNT 
FROM FN_DBLOG(NULL,NULL) WHERE OPERATION IN ('LOP_COMMIT_XACT','LOP_ABORT_XACT') 
GROUP BY OPERATION 

私はいくつかのサンプルデータを使用していくつかのテストをしました。..

Begin tran test1 
insert into t1 
select 3 
rollback 

出力:

Operations cnt 
Commits  3 
RollBacks 4 
コメントどおり 更新:
読書トランザクションログのバックアップは高価なことができますが、私はあなたが

1.since影響下にこれを持つことができます作成​​したバックアップではなく、アクティブTLOGでこれを..doingアクティブログ上でこれを行うお勧めします

http://rusanu.com/2014/03/10/how-to-read-and-interpret-the-sql-server-log/ 01:ログ・スキャン、あなたのログのバックアップのサイズに応じて、サーバー上のTransaction log truncation will be prevented
2.Huge IO負荷、since the output of ::fn_dblog can easily go into millions of rows

の参照はありません

https://blogs.msdn.microsoft.com/dfurman/2009/11/05/reading-database-transaction-log-with-fn_dump_dblog/

+1

これは、それ自体は悪いideeaではありませんが、ログを読み戻す、中程度の負荷のサーバー上で、高価な非常に*されるだろうと考えています。 –

+0

それは本当です、私はこれを明確にするためにさらに追加します – TheGameiswar

+1

ありがとう、それは完璧に動作します。私は復元されたバージョンでそれを実行するためにちょっとした作業をしなければなりません。 –

関連する問題