Preciso atualizar o painel de mensagens no SSMS com mais frequência. Existe uma maneira de fazer isso sem instruções GO?
Minha consulta é:
DECLARE @Deleted_Rows INT @Deleted_Rows = 1;
DECLARE @Deleted_Rows_Total bigINT = 0;
DECLARE @t1 DATETIME;
DECLARE @t2 DATETIME;
WHILE (@Deleted_Rows > 0)
BEGIN
SET @t1 = GETDATE();
DELETE TOP (100000) FROM PenData WHERE Cas < '20200101'
SET @Deleted_Rows = @@ROWCOUNT;
SET @t2 = GETDATE();
SET @Deleted_Rows_Total = @Deleted_Rows_Total +@Deleted_Rows
PRINT DATEDIFF(SECOND,@t1,@t2)
PRINT @Deleted_Rows_Total
--SELECT @Deleted_Rows AS smazano, @Deleted_Rows_Total AS celkem, DATEDIFF(SECOND,@t1,@t2) AS elapsed_s, GETDATE() as CAS
END
RAISERROR ... WITH NOWAIT
pode ser usado em vez de (ou além de)PRINT
fazer com que o SQL Server envie resultados pendentes imediatamente ao cliente.O exemplo abaixo usa
RAISERROR ... WITH NOWAIT
com uma string vazia e gravidade zero para retornar a saída dasPRINT
instruções anteriores imediatamente.Não é exatamente uma resposta, mas já vi pessoas contornando essa limitação do SSMS atualizando a linha na tabela dedicada, onde procedimentos de execução longa relatavam seu estado atual.
por exemplo, algo como