Отладка сложной процедуры T-SQL на SQL Server - PullRequest
3 голосов
/ 16 января 2012

У меня очень сложная процедура T-SQL с 2000 строками (я ее не разрабатывал). Меня попросили исправить некоторые ошибки на нем. Я пробовал некоторые методы как:

  • использование опции отладки, которую я нашел в SQL Server Management Studio
  • использование оператора "PRINT" для просмотра переменных

Мой вопрос:
Какой лучший метод для отладки такой процедуры?

Ответы [ 3 ]

4 голосов
/ 16 января 2012

Начните с рефакторинга процедуры на несколько меньших процедур, которые можно протестировать и отладить изолированно.

2 голосов
/ 16 января 2012

В дополнение к операторам печати вы можете использовать предложение output в большинстве ваших запросов (включая вставки, обновления и удаления), чтобы вы могли видеть промежуточные результаты и не прерывать поток процедуры. Exampls:

Удалить заявления:

delete [tbl]
output deleted.*
 where [something] = 'stuff';

Вставить заявления:

insert [tbl]
output inserted.*
values (42, 'things');

Обновление операторов:

update [tb]
output deleted.*, -- Original values
       inserted.* -- Updated values
   set [something] = 'poopen'
 where [id] = 42;
1 голос
/ 16 января 2012
  1. В SQL Server 2008 мы можем использовать «Отладка >> Начать отладку». Для предыдущих версий я использовал Visual Studio - http://msdn.microsoft.com/en-us/library/yet1b7by(VS.80).aspx

  2. Используйте SQL Profiler

  3. PRINT Stmt (при наличии параметра, который нужно распечатать или нет)

Они должны использоваться и тестироваться только в не-PROD средах.

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