CREATE PROCEDURE dbo.GetRecoveryTime AS SET NOCOUNT ON DECLARE @RecoveryStart DATETIME, @RecoveryStop DATETIME IF (SELECT OBJECT_ID('tempdb..#TMP_RECOVERY_START')) IS NOT NULL BEGIN DROP TABLE #TMP_RECOVERY_START END IF (SELECT OBJECT_ID('tempdb..#TMP_RECOVERY_STOP')) IS NOT NULL BEGIN DROP TABLE #TMP_RECOVERY_STOP END CREATE TABLE #TMP_RECOVERY_START (LogDate DATETIME, ProcessInfo NVARCHAR(MAX), Text NVARCHAR(MAX)) CREATE TABLE #TMP_RECOVERY_STOP (LogDate DATETIME, ProcessInfo NVARCHAR(MAX), Text NVARCHAR(MAX)) INSERT #TMP_RECOVERY_START EXEC xp_readerrorlog 0, 1, N'(c) Microsoft Corporation.', NULL, NULL, NULL, N'ASC' INSERT #TMP_RECOVERY_STOP EXEC xp_readerrorlog 0, 1, N'Recovery is complete. This is an informational message only. No user action is required.', NULL, NULL, NULL, N'desc' SELECT @RecoveryStart = LogDate FROM #TMP_RECOVERY_START SELECT @RecoveryStop = LogDate FROM #TMP_RECOVERY_STOP SELECT DATEDIFF(SECOND, @RecoveryStart, @RecoveryStop) AS RecoveryTimeSeconds GO