Disable PRINT in SQL Server

2020-03-23 11:27发布

I have a script with many debug messages, which are printed by PRINT function. Is there any way to disable that messages? I have in mind something like SET NOCOUNT ON, but for user messages.

4条回答
甜甜的少女心
2楼-- · 2020-03-23 11:59

I like to set a variable, @Debug tinyint in my scripts/SPs.

Default/set this to 0 to suppress messages, 1 to show messages.

Then instead of using PRINT, use:

IF @Debug > 0 RAISERROR( 'Busy doing something...', 0, 1 ) WITH NOWAIT

Using WITH NOWAIT forces the message to be displayed immediately and not just when the output buffer is flushed.

As a convention, I use @Debug = 1 for progress messages, @Debug = 2 to include dynmaic SQL, @Debug = 3 to output result sets.

Of course if you have GO batch terminators in your script the variable method won't work.

查看更多
▲ chillily
3楼-- · 2020-03-23 12:00

You need to simply comment out all your PRINT statements

查看更多
你好瞎i
4楼-- · 2020-03-23 12:03

Sometimes the simplest solution is the best... Make all your print statements that deal with debugging as follows:

PRINT 'Debug ' + [WhateverStatementsYouDesire]

Then you can do a search and replace

PRINT 'Debug ' --> --PRINT 'Debug '

Do the opposite Find and Replace to turn them back on again...

(I do realize this is not quite what you were asking for but here is what I do for now. If there is such a switch as you are searching for I would probably change to that method.)

查看更多
成全新的幸福
5楼-- · 2020-03-23 12:03

Quite simply, no. There is no #debug either.

SSMS tools pack has a #debug feature but I've not used it.

查看更多
登录 后发表回答