计算SQL Sever 2008中的回滚数

马丁·古斯

我正在尝试,SET-OPTION XACT_ABORT ON因为我看到许多睡眠会话在进行开放事务,导致应用程序出现问题。

有没有一种方法可以衡量是否通过翻转选项起作用?我正在考虑每天回滚的次数我如何收集这些?

我正在使用SQL Server 2008 SP4

游戏世界

考虑到您的数据库处于完全恢复模型中,您可以合并每天进行的所有事务日志备份并进行查询...

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

根据评论更新:
阅读事务日志备份可能会很昂贵,我建议您对已执行的备份执行此操作,而不要对活动日志执行此操作。.在活动Tlog上执行此操作可能会产生以下影响

1.由于这样做会进行日志扫描,因此可以防止事务日志被截断
。2.服务器上的大量IO负载取决于您的日志备份大小,因为:: fn_dblog的输出可以轻松进入数百万行

参考文献:

http://rusanu.com/2014/03/10/how-to-read-and-interpret-the-sql-server-log/

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章