Impressora SQL
Imprima mensagens no SSMS instantaneamente usando um truque comprovado e confiável. Inclui um carimbo de data e hora e números de linha de opção
Uma função que utilizamos regularmente para controlar os tempos em procedimentos armazenados de longa duração. Isto imprime sem esperar por um lote como o PRINT. Três parâmetros de entrada são usados:
- @MessageDate - Passa em NULL para imprimir a data atual como a função é chamada,
- @MessageText - O texto da mensagem que você deseja exibir
- @MessageRows - Opcionalmente, adicione o número de linhas afetadas.
SQL
Use Utilities
GO
CREATE PROC dbo.Printer(@MessageDate DATETIME,@MessageText NVARCHAR(250),@MessageRows NVARCHAR(50)) AS BEGIN
IF @MessageDate IS NULL SET @MessageDate=GETDATE();
DECLARE @MessageDateString NVARCHAR(MAX)=CONVERT(NVARCHAR(20),@MessageDate,120)
IF @MessageRows IS NOT NULL BEGIN
RAISERROR ('%s - %s - Rows(%s)',0,0,@MessageDateString,@MessageText,@MessageRows) WITH NOWAIT
END
IF @MessageRows IS NULL BEGIN
RAISERROR ('%s - %s',0,0,@MessageDateString,@MessageText,@MessageRows) WITH NOWAIT
END
END
GO
EXEC dbo.Printer NULL,'Started',NULL
WAITFOR DELAY '00:00:03'
EXEC dbo.Printer NULL,'Step 1',1
WAITFOR DELAY '00:00:01'
EXEC dbo.Printer NULL,'Step 2',2
WAITFOR DELAY '00:00:01'
EXEC dbo.Printer NULL,'Step 3',3
WAITFOR DELAY '00:00:01'
EXEC dbo.Printer NULL,'Step 4',4
WAITFOR DELAY '00:00:01'
EXEC dbo.Printer NULL,'Step 5',5
WAITFOR DELAY '00:00:01'
EXEC dbo.Printer NULL,'Finished',NULL
GO
CREATE PROC dbo.Printer(@MessageDate DATETIME,@MessageText NVARCHAR(250),@MessageRows NVARCHAR(50)) AS BEGIN
IF @MessageDate IS NULL SET @MessageDate=GETDATE();
DECLARE @MessageDateString NVARCHAR(MAX)=CONVERT(NVARCHAR(20),@MessageDate,120)
IF @MessageRows IS NOT NULL BEGIN
RAISERROR ('%s - %s - Rows(%s)',0,0,@MessageDateString,@MessageText,@MessageRows) WITH NOWAIT
END
IF @MessageRows IS NULL BEGIN
RAISERROR ('%s - %s',0,0,@MessageDateString,@MessageText,@MessageRows) WITH NOWAIT
END
END
GO
EXEC dbo.Printer NULL,'Started',NULL
WAITFOR DELAY '00:00:03'
EXEC dbo.Printer NULL,'Step 1',1
WAITFOR DELAY '00:00:01'
EXEC dbo.Printer NULL,'Step 2',2
WAITFOR DELAY '00:00:01'
EXEC dbo.Printer NULL,'Step 3',3
WAITFOR DELAY '00:00:01'
EXEC dbo.Printer NULL,'Step 4',4
WAITFOR DELAY '00:00:01'
EXEC dbo.Printer NULL,'Step 5',5
WAITFOR DELAY '00:00:01'
EXEC dbo.Printer NULL,'Finished',NULL