2010-07-09 7 views
4

У меня есть сценарий со многими сообщениями отладки, которые печатаются функцией PRINT. Есть ли способ отключить эти сообщения? Я имею в виду что-то вроде SET NOCOUNT ON, но для сообщений пользователя.Отключить PRINT в SQL Server

ответ

5

Мне нравится устанавливать переменную @Debug tinyint в мои скрипты/SP.

По умолчанию/установите значение 0 для подавления сообщений, 1 для отображения сообщений.

Затем, вместо использования печати используйте:

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

Использование С NOWAIT заставляет сообщение, которое будет отображаться сразу, а не только тогда, когда выходной буфер очищается.

В качестве соглашения я использую @Debug = 1 для сообщений о ходе выполнения, @Debug = 2 для включения dynmaic SQL, @Debug = 3 для вывода наборов результатов.

Конечно, если в вашем скрипте есть термины терминации GO, метод переменной не будет работать.

+0

Вот почему я иду с заменой инструкции PRINT ... –

2

Вам нужно просто закомментировать все ваши PRINT заявления

1

Проще говоря, нет. Не существует и #debug.

SSMS tools pack имеет функцию #debug, но я не использовал ее.

3

Иногда самое простое решение является лучшим ... сделать все операторы печати, которые имеют дело с отладкой следующим образом:

PRINT 'Debug ' + [WhateverStatementsYouDesire] 

Затем вы можете сделать поиск и замену

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

Do напротив «Найти и заменить», чтобы снова включить их ...

(Я понимаю, что это не совсем то, о чем вы просили, но вот что я делаю для Теперь. Если есть такой переключатель, который вы ищете, я бы, вероятно, изменил бы этот метод.)

Смежные вопросы