Stampa di messaggi di SQL Server
Stampa i messaggi in SSMS istantaneamente utilizzando un trucco provato e affidabile. Include una data/ora e numeri di riga delle opzioni
Una funzione che impieghiamo regolarmente per tenere traccia dei tempi all'interno di stored procedure di lunga durata. Questo stampa senza attendere un batch come PRINT. Vengono utilizzati tre parametri di input:
- @MessageDate - Passa NULL per stampare la data e l'ora corrente quando viene chiamata la funzione,
- @MessageText - Il testo del messaggio che desideri visualizzare
- @MessageRows - Aggiungi facoltativamente il numero di righe interessate.
SQL
Use UtilitiesGOCREATE 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 ENDENDGOEXEC dbo.Printer NULL,'Started',NULLWAITFOR DELAY '00:00:03'EXEC dbo.Printer NULL,'Step 1',1WAITFOR DELAY '00:00:01'EXEC dbo.Printer NULL,'Step 2',2WAITFOR DELAY '00:00:01'EXEC dbo.Printer NULL,'Step 3',3WAITFOR DELAY '00:00:01'EXEC dbo.Printer NULL,'Step 4',4WAITFOR DELAY '00:00:01'EXEC dbo.Printer NULL,'Step 5',5WAITFOR DELAY '00:00:01'EXEC dbo.Printer NULL,'Finished',NULL