Цена «прокола»


cena-prokola_1.jpg

Это очень серьезная проблема, и вот почему.

Я действительно подумал, что представленный на экране 2 код должен был сработать, и я ясно помню, как испытывал этот фрагмент дважды в различных средах и как был удивлен тем обстоятельством, что он не работает (у меня даже есть черновые заметки, подтверждающие мое замешательство в OneNote). Несомненно, где-то я сморозил большую глупость и умудрился опростоволоситься с диагностикой из-за этого.

Я знаю, что код, опубликованный на экране 2, всегда должен работать. Дело в том, что вы полнение хранимых процедур откладывается до времени выполнения соответствующего кода (в отличие от включения оператора USE, который оценивается в то время, когда код подвергается синтаксическому анализу).

Как ни печально, игнорирование сказанного выше означает следующее.

Отказываясь от рассмотрения этого подхода в качестве варианта или обходного маневра, я затрудняю решение всей проблемы, поскольку метод, предусматривающий введение проверки if/else в хранимую процедуру (в целевой базе данных) намного проще, чем то, что делал я.

Не учитывая указанный подход, я очень ошибался. Я весьма признателен читателю Дейлу Хирту, который обратил мое внимание на упомянутый вариант в своем комментарии к предыдущей статье. Что и говорить, обидно прослыть идиотом, написавшим целую серию статей. Но еще обиднее оказаться идиотом, написавшим серию статей, которые никто не читает. Как бы то ни было, новый поворот событий несколько усложняет дело. В долгосрочной перспективе перед нами два пути: динамическое выявление во время выполнения задания или вариант с динамической активацией и деактивацией заданий. Ниже публикуются аргументы за и против каждого из названных подходов.

Динамическое выявление во время выполнения (относительно простой подход)

Динамическое определение, следует ли запускать код во время исполнения, состоит в следующем. Нужно дождаться срабатывания графика заданий агента SQL Server и запуска задания, чтобы определить, следует ли запускать код на выполнение (другой вариант — упреждающая активация или деактивация заданий).

Комментарии