On 26th May, we had a very informative session presented by Mr. Mohammed Owais (CTO at CAZAR) in SQL Server User Group meetup about Backups – not as simple as you think. He covered almost each and every aspect from full backup till tail log backup, however, a very nice question has been raised by an audience – ‘how to check the status of the backup / recovery along with the percentage via TSQL ?’. Because in most cases we have more than one DBA in an organization and sometimes they are geographically dispersed and if one of them takes backup / restore, how the others will come to know that he is performing any backup / restore using T-SQL.
Given below is the script which will give you the backup / restore progress along with the exact percentage and the user name (who is taking the backup).
USE master GO SELECT A.session_id As [Session ID] , login_name As [Login Name] , [command] As [Command] , [text] AS [Script] , [start_time] As [Start Time] , [percent_complete] AS [Percentage] , DATEADD(SECOND,estimated_completion_time/1000, GETDATE()) as [Estimated Completion time] , [program_name] As [Program Name] FROM sys.dm_exec_requests A CROSS APPLY sys.dm_exec_sql_text(A.sql_handle) B INNER JOIN sys.dm_exec_sessions C ON A.session_id=C.session_id WHERE A.command in ('BACKUP DATABASE','RESTORE DATABASE') GO
1 : While Taking Backup
USE master; GO BACKUP DATABASE AdventureWorks2012 TO DISK = 'C:\Data\AdventureWorks2012.Bak' WITH FORMAT, MEDIANAME = 'SQLServerBackups', NAME = 'Full Backup of AdventureWorks2012'; GO
2 : While Restoring Backup
USE master; GO RESTORE DATABASE AdventureWorks2012 FROM DISK = 'C:\Data\AdventureWorks2012.BAK' WITH NORECOVERY GO
Let me know if you came across this issue and its solution as well.