Возможное решение состоит в том, чтобы создать таблицу ведения журнала для измерения хода выполнения и вставить запись даты и времени, когда процедура достигает определенной строки, таблица будет обновляться по мере выполнения процедуры.
CREATE TABLE MONITOR
(
ID INT IDENTITY(1,1) NOT NULL,
STEP_NUMBER INT,
EXECUTION_DT DATETIME
)
CREATE PROC SPX_MEASURE_PROGRESS
AS
WAITFOR DELAY '00:00:05'
INSERT INTO MONITOR VALUES(1,GETDATE())
PRINT 'STEP 1'
WAITFOR DELAY '00:00:05'
PRINT 'STEP 2'
INSERT INTO MONITOR VALUES(2,GETDATE())
WAITFOR DELAY '00:00:05'
PRINT 'STEP 3'
INSERT INTO MONITOR VALUES(3,GETDATE())
EXEC DBO.SPX_MEASURE_PROGRESS
SELECT * FROM MONITOR