Документирование гигантской сети взаимосвязанных хранимых процедур в базе данных MS SQL: какой инструмент или формат?

11

Я надеюсь, что это вопрос с более коротким ответом, чем «Читать книгу на 1000 страниц», но затем, если это реальная ситуация, то ударил меня этим.

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

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

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

  1. Какой обычный формат для документирования большой хранимой процедуры? Описание ожидаемых значений для каждого параметра In (т. Е. «Предварительные условия», «постусловия», т. Е. Для логических параметров, что изменяется при его включении или выключении и т. Д.)

  2. Как обычно это документируют? Только комментарии SQL? Внешняя оснастка, которая специфична для этой цели? Внешняя «документация»? У нас нет никаких инструментов SQL, кроме MS SQL Management Studio, но нам интересно, есть ли инструмент, который улучшил бы понимание, документирование и тестирование нашей среды. Может быть, это лучший способ задать мой вопрос; Какой инструмент мне нужен, чтобы решить наш беспорядок?

Наша цель - уметь:

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

Б. Покажите разработчикам клиентских приложений, как правильно вызывать каждую из этих сложных хранимых процедур.

C. Модульное тестирование наших хранимых процедур.

Уоррен П
источник

Ответы:

4

Самое важное в документации - это то, что она имеет смысл для вас. Там действительно нет стандартного способа сделать это.

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

mrdenny
источник
4

RedGate SQL Dependency Tracker инструмент может быть полезным. Он может графически показать, какие объекты базы данных (SP / views / tables) зависят друг от друга. Я использовал его при работе с некоторыми таблицами, с которыми я не был знаком, чтобы определить порядок отключения ограничений.

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

Трассировка. Другой вариант - записать строки журнала в начале и в конце критических хранимых процедур. Каждая строка может включать дату, «уровень детализации», «наиболее вероятный» контекст, «подконтекст», имя процесса. и счетчики строк. Вероятно, это будет беспорядок (например, журнал событий Windows), но, возможно, будет полезен в некоторых разделах. Если SP фактически используется для вставки журнала, а затем его можно легко включить / выключить без особой дополнительной нагрузки (ymmv).

Примечание: однажды я загрузил в принтер прохладную бумагу 11 x 17, нашел красивый крошечный шрифт и некоторые логические отступы, чтобы суммировать сложный поток данных / SP на ~ 5 страницах некоторого псевдо-SQL. Я почти уверен, что в конечном итоге упомянул об этом только несколько раз, и никто больше не осмеливался подходить к нему, поскольку там это было не стандартно, и трудно доверять чему-то не интегрированному и может устареть. Процесс документации действительно заставил знакомство с кодом, хотя!

crokusek
источник
Я оценил это и кучу других инструментов. Пока что я все еще делаю это вручную. Таким образом, я принял ответ, который отражает то, что я сделал. Но это круто.
Уоррен П
3

Пол Уайт предоставил мне бесплатный инструмент Atlantis Schema Surf от Atlantis Interactive, который может вам чем-то помочь.

RBarryYoung
источник