Если вы можете разбить код на пакеты, вы можете использовать PRINT
операторы повсюду.
Простой пример ... запустите это и убедитесь, что вы нажали на вкладку «Сообщения» сразу после запуска.
select 1 as 'a' into #t
print '#t table pouplated'
go
--simulate some heavy queries taking some time
waitfor delay '00:00:05'
select 2 as b into #t2
print '#t2 table pouplated'
go
SQL Server также имеет отладчик
И наконец ... по частям на протяжении всей процедуры вы можете обновить таблицу со статусом, аналогичным печатному сообщению, чтобы вы могли запрашивать ее в любое время.Это избавило бы от необходимости разбивать вещи на пакеты ... Я бы добавил флаг для этого, чтобы вы могли просто перевернуть его на 0, когда вы закончите отладку, чтобы вставка не выполнялась.
declare @logToTable bit = 1
select 1 as 'a' into #t
if @logToTable = 1
begin
insert into logTable (status_msg, log_date)
values
('#t populated',getdate())
end
--simulate some heavy queries taking some time
waitfor delay '00:00:05'
select 2 as b into #t2
if @logToTable = 1
begin
insert into logTable (status_msg, log_date)
values
('#t2 populated',getdate())
end