SQL Server Transactions Per Day
This post can help you in capturing SQL Server Transactions per day. Sometimes we need to capture the average number of transactions per day / hour / minute. Below is the T-SQL script that can help you to capture the SQL Server Transactions per day. Below script returns two result sets:
- Retrieves the total transactions occurred in SQL Server Instance since last restart
- Database Wise Average Transactions since last restart
T-SQL to capture SQL Server Transactions per day:
/************************************************************/
/******* SQL Server Transactions Per Day / Hour / Min *******/
/******* Tested : SQL Server 2008 R2, 2012, 2014 ************/
/******* Author : udayarumilli.com **************************/
/************************************************************/
DECLARE @Days SMALLINT,
@Hours INT,
@Minutes BIGINT,
@Restarted_Date DATETIME;
/*** Capture the SQL Server instance last restart date ***/
/*** We will gte the Tempdb creation date ***/
SELECT @Days = DATEDIFF(D, create_date, GETDATE()),
@Restarted_Date = create_date
FROM sys.databases
WHERE database_id = 2;
/*** Prepare Number of Days and Hours Since the last SQL Server restart ***/
SELECT @Days = CASE WHEN @Days = 0 THEN 1 ELSE @Days END;
SELECT @Hours = @Days * 24;
SELECT @Minutes = @Hours * 60;
/*** Retrieve the total transactions occurred in SQL Server Instance since last restart ***/
SELECT @Restarted_Date AS 'Last_Restarted_On',
@@SERVERNAME AS 'Instance_Name',
cntr_value AS 'Total_Trans_Since_Last_Restart',
cntr_value / @Days AS 'Avg_Trans_Per_Day',
cntr_value / @Hours AS 'Avg_Trans_Per_Hour',
cntr_value / @Minutes AS 'Avg_Trans_Per_Min'
FROM sys.dm_os_performance_counters
WHERE counter_name = 'Transactions/sec'
AND instance_name = '_Total';
/*** Database Wise Average Transactions since last restart ***/
SELECT @Restarted_Date AS 'Last_Restarted_On',
@@SERVERNAME AS 'Instance_Name',
instance_name AS 'Database_Name',
cntr_value AS 'Total_Trans_Since_Last_Restart',
cntr_value / @Days AS 'Avg_Trans_Per_Day',
cntr_value / @Hours AS 'Avg_Trans_Per_Hour',
cntr_value / @Minutes AS 'Avg_Trans_Per_Min'
FROM sys.dm_os_performance_counters
WHERE counter_name = 'Transactions/sec'
AND instance_name <> '_Total'
ORDER BY cntr_value DESC;
Here is the script file: SQL_Server_Transactions_Per_Day
These are the average values. To get the exact transaction details we can automate the capture process:
- Create a table to capture the transaction counts since last restart
- Create a stored procedure to capture the transactions since the last restart
- Schedule a job to execute the procedure on hourly basis
- Write a query to capture the hourly differences















Great post!thanks for sharing the information about SQL server transaction. very needful information.
Thanks Derick.
Happy Reading
SQL The One Team
http://www.udayarumilli.com
Top, thanks!
Thank You!!!
Happy Learning
SQL THE ONE Team
http://www.udayarumilli.com
Thanks
Your blog is in a convincing manner, thanks for sharing such an information with lots of your effort and time sql dba training