2014-01-23 2 views
1

Я только что обнаружил идею тестирования сохраненной процедуры, вызвав ее из пары BEGIN TRAN t1ROLLBACK TRAN t1.
Я немного боюсь этого. Это обычная практика? Это надежный?
Моей целью здесь является краткий тест хранимого процесса, который считывает и обновляет 2 базы данных (тот же сервер). SP не выполняет никаких усечений, но использует табличную переменную в сочетании с оператором INSERT.. OUTPUT.
Объем будет низким (менее 1000 затронутых линий). БлагодаряИспользование транзакции отката для тестирования

+2

Я делаю это часто и никогда не имел проблемы с ним. – JohnD

+0

@JohnD: Спасибо. Я просто «раскалывал» это, выглядит как хороший тайм-брейк –

+0

Насколько это возможно, да. Он просто показывает, что хранимые процедуры не вызывают ошибок. Это не показывает, что они поступают правильно. Если бы они ничего не сделали, они бы прошли эти тесты. –

ответ

2

Есть несколько вещей, которые могут пойти не так:

  • прок может сделать свои собственные управления транзакциями
  • Это может выполнить без transactable заявления как CREATE DATABASE
  • Это может иметь погрешность , в результате чего транзакция автоматически откатывается. Если процедура затем продолжает работать в каком-то смысле, это может написать материал за пределами сделки
  • XACT_ABORT может быть использовано непоследовательно, в результате чего ранее упомянутого эффекта

В общем, это хороший метод, хотя.

Truncate транслируется, кстати.

+1

upvoted и +1 для усечения, потому что таблица обрезания мифа не может быть откат – jean

+0

@jean, поэтому я и сказал это. Я не знаю, откуда этот миф. DROP TABLE также транслируется. Все TRUNCATE делает, устанавливает корень b-дерева на пустую страницу и освобождает оставшуюся часть от фиксации. Корень b-дерева можно легко откатть. – usr

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