Каков Ваш привилегированный метод для отладки MS хранимые процедуры SQL?

Эта функция вычисляет значения первого и последнего шага:

static void CalcSteps(int min, int max, int stepSize, out int firstStep, out int lastStep)
{
    if (min >= 0)
    {
        firstStep = (min / stepSize) * stepSize;
    }
    else
    {
        firstStep = ((min - stepSize + 1) / stepSize) * stepSize;
    }

    if (max >= 0)
    {
        lastStep = ((max + stepSize - 1) / stepSize) * stepSize;
    }
    else
    {
        lastStep = (max / stepSize) * stepSize;
    }
}
6
задан Milen A. Radev 5 March 2009 в 18:03
поделиться

8 ответов

Профилировщик очень удобен, просто добавьте события SP:StmtStarting и отфильтруйте действие только к своему процессу установкой SPID=xxx. После того как у Вас есть настроенный, это - бриз для наблюдения то, что продолжается.

8
ответ дан 8 December 2019 в 17:27
поделиться

До не знания, каковы допустимые исходные данные были бы, необходимо протестировать широкий спектр исходных данных включая особенно недопустимые исходные данные. Необходимо определить тестовые сценарии перед записью procs. Затем у Вас есть восстанавливаемый набор тестов для выполнения каждый раз, когда кто-то изменяет сложный процесс.

0
ответ дан 8 December 2019 в 17:27
поделиться
0
ответ дан 8 December 2019 в 17:27
поделиться

Я предпочитаю просто использовать сохраненный procs для извлечения набора данных и делать любую сложную "работу" над стороной приложения. Поскольку Вы корректны, пытаясь "отладить" то, что происходит в кишках многих разделенных на уровни, цикличное выполнение курсора, поддающееся соблазну использование, вложенное, сохранило proc, является очень трудным.

Тем не менее КБ MS 316549 описывает, как использовать Visual Studio для отладки сохраненного procs.

В соответствии с этой статьей, существует много ограничений к отладке этим способом:

  • Вы не можете "повредить" выполнение.
  • Вы не можете "отредактировать и продолжить".
  • Вы не можете изменить порядок выполнения оператора.
  • Хотя можно изменить значение переменных, изменения не могут вступить в силу, потому что значения переменных кэшируются.
  • Вывод от оператора печати SQL не отображен.

Править: Очевидно, если Вы - человек, делающий, это сохранило proc, затем не делайте его "многими разделенный на уровни, цикличное выполнение курсора, поддающееся соблазну использование, и вложенный". В моей роли DBA, тем не менее, это в значительной степени, с чем я ежедневно встречаюсь от разработчиков приложения.

1
ответ дан 8 December 2019 в 17:27
поделиться

Моя команда использует SPS по правилу как наш интерфейс к базе данных; мы делаем это способом, что пользователь приложения может ТОЛЬКО выполнить SPS (с нашим соглашением о присвоении имен).

Одна лучшая практика, которую мы используем, который работает хорошо, то, что определенные сценарии тестирования содержатся в рамках комментариев SP и должны быть выполнены на каждой версии SP или разработке нового SP.

Необходимо всегда, ВСЕГДА тестировать SP максимально полностью без любого включенного прикладного уровня (через Studio управления, например).

0
ответ дан 8 December 2019 в 17:27
поделиться

Можно на самом деле подключить отладчик к SQL-серверу :) - от по сравнению с, учитывая Вас настроили это на Вашем SQL-сервере.

Проверьте эту ссылку на большее количество информации, заметьте, что можно установить точки останова :) https://web.archive.org/web/20090303135325/http://dbazine.com/sql/sql-articles/cook1.

Проверьте эту ссылку на более общий набор информации: http://msdn.microsoft.com/en-us/library/zefbf0t6.aspx

Обновление: Относительно "Существуют однако случаи, где больше чем одна хранимая процедура включена и нахождение, что допустимые данные для ввода утомительны. Легче просто инициировать вещи из моего веб-приложения".

Я предполагаю, что Вы настраиваете интеграционные тесты, сфокусированные на определенных методах, которые взаимодействуют с теми процедурами. Если процедуры управляются веб-приложением, это - великолепное место, чтобы иметь допустимые тесты + исходные данные, которые можно выполнить в любое время. Если существует несколько приложений, которые взаимодействуют с процедурами, я посмотрел бы на поблочное тестирование процедуры вместо этого.

4
ответ дан 8 December 2019 в 17:27
поделиться

Убедитесь, что вы вошли в основную сохраненную процедуру в VS2005 / 2008, когда она встретила вложенную функцию, нажмите F11 (войти), чтобы войти ... продолжить отладку ... Это не было очень очевидно из меню отладки.

0
ответ дан 8 December 2019 в 17:27
поделиться

Я предпочитаю не отлаживать, вместо этого я занимаюсь разработкой через тестирование, что почти устраняет необходимость отладки.

1
ответ дан 8 December 2019 в 17:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: