Sql-Server

如何獲取給定 MSSQL 數據庫上每日已送出事務的數量?

  • July 21, 2015

目前連接的事務數可以通過@@TRANCOUNT 獲得。

如何獲得給定數據庫上全域送出事務的每日計數器?

  1. 下面是來自 Paul 的部落格 Script: open transactions 的一個很棒的腳本,其中包含文本和計劃,應該可以幫助您進行:
SELECT
   [s_tst].[session_id],
   [s_es].[login_name] AS [Login Name],
   DB_NAME (s_tdt.database_id) AS [Database],
   [s_tdt].[database_transaction_begin_time] AS [Begin Time],
   [s_tdt].[database_transaction_log_bytes_used] AS [Log Bytes],
   [s_tdt].[database_transaction_log_bytes_reserved] AS [Log Rsvd],
   [s_est].text AS [Last T-SQL Text],
   [s_eqp].[query_plan] AS [Last Plan]
FROM
   sys.dm_tran_database_transactions [s_tdt]
JOIN
   sys.dm_tran_session_transactions [s_tst]
ON
   [s_tst].[transaction_id] = [s_tdt].[transaction_id]
JOIN
   sys.[dm_exec_sessions] [s_es]
ON
   [s_es].[session_id] = [s_tst].[session_id]
JOIN
   sys.dm_exec_connections [s_ec]
ON
   [s_ec].[session_id] = [s_tst].[session_id]
LEFT OUTER JOIN
   sys.dm_exec_requests [s_er]
ON
   [s_er].[session_id] = [s_tst].[session_id]
CROSS APPLY
   sys.dm_exec_sql_text ([s_ec].[most_recent_sql_handle]) AS [s_est]
OUTER APPLY
   sys.dm_exec_query_plan ([s_er].[plan_handle]) AS [s_eqp]
ORDER BY
   [Begin Time] ASC;
GO

您可以通過作業相應地安排它,以根據您的需要向您發送結果:

  1. 此外,您可以參考Adam Mechanic 的 WHO_IS_ACTIVE以獲取相同的詳細資訊。

要從 who_is_active 收集數據,您可以將其記錄到表中以供以後查看,如此處所述如何在循環中使用 sp_whoisactive 記錄活動

引用自:https://dba.stackexchange.com/questions/107602