Это хорошая идея, чтобы напечатать имя триггера, когда он выполняется? - PullRequest
0 голосов
/ 12 февраля 2010

Мы помещаем оператор печати сверху, поэтому, когда мы выполняем запрос в SSMS, вкладка сообщений показывает мне, что может происходить больше, чем кажется на первый взгляд.

Будет ли большой удар по производительности?

Ответы [ 2 ]

3 голосов
/ 12 февраля 2010

Снижение производительности, вероятно, незначительно.

Чтобы получить исчерпывающий ответ, вам необходимо проверить это - определить, сколько времени занимает операторы print и сколько времени (как при первой компиляции с новой статистикой, так и при последующих попытках).

2 голосов
/ 12 февраля 2010

Я согласен с @Oded - влияние заявления на печать на производительность, вероятно, незначительно. Возможно, вы могли бы проверить sys.dm_exec_sessions для вызывающего @@ SPID и посмотреть, какое приложение они используют, и условно распечатать, только если это Management Studio. Но это будет дороже, чем просто печать всегда. Просто чтобы показать, как это будет выглядеть:

IF EXISTS
(
 SELECT 1 
  FROM sys.dm_exec_sessions 
  WHERE session_id = @@SPID
  AND [program_name] LIKE '%Management Studio%'
)
 PRINT 'Trigger : <trigger name>';

Чтобы избежать ошибок копирования / вставки, когда может указываться неправильный триггер, потому что вы скопировали код из существующего триггера и не заметили, я хотел бы рассмотреть возможность изменения вашего нового шаблона триггера, чтобы иметь этот код после SET NOCOUNT ON:

PRINT 'Trigger : ' + OBJECT_NAME(@@PROCID);

Это немного дороже, чем просто жесткое кодирование названия, но может предотвратить некоторые проблемы с устранением неполадок позже, если вы склонны к этому типу ошибок копирования / вставки (я знаю, что время от времени я делаю это).

В любом случае, даже если вы не хотите этого делать, вместо этого вы можете добавить следующую строку:

PRINT 'Trigger : <Trigger_Name, sysname, Trigger_Name>';

Чтобы изменить шаблон для новых триггеров, перейдите в меню «Просмотр»> «Обозреватель шаблонов», разверните «Триггер», щелкните правой кнопкой мыши «Создать триггер T-SQL (Новое меню)» и выберите «Редактировать». Добавьте строку выше и перейдите в Файл> Сохранить. Теперь, когда вы хотите создать новый триггер, вы можете открыть этот файл с помощью того же процесса, который я только что упомянул, или вы можете развернуть таблицу в обозревателе объектов, щелкнуть правой кнопкой мыши «Триггеры» и выбрать «Новый триггер ...». откройте код, который вы можете нажать CTRL + SHIFT + M, и он даст вам простой маленький пользовательский интерфейс, который позволит вам заменить все параметры токена, упрощая ввод имени таблицы, типа действия и т. д. Конечно, когда вы закончили и создали триггер, вы должны сохранить этот скрипт в системе контроля версий, но это другое обсуждение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...