Поиск зависимостей объекта в БД MSSQL Server

добавлено: 03 сен 13
понравилось:0
просмотров: 4656
комментов: 2

теги:

Автор: SQL Refactor Studio Team

Каждый из тех, кто занимается разработкой БД, постоянно сталкивается с задачами типа “Как найти в БД все места, где используется данная таблица|поле|функция…”. Задача усложняется если помимо БД нужно проанализировать код приложений работающих с БД (т.н. найти вызов хранимой процедуры на веб-сайте).

Использование системных представлений в MS SQL и поиск по тексту в исходном коде того же сайта конечно решат задачу, но займут много времени (которого иногда просто физически не хватает) и доставят массу неудобств. Поставив перед собой задачу «Получать подобную информацию за пару кликов», я начал смотреть какие же решения существуют на рынке. Взяв два самых популярных дополнения для SSMS имеющих функцию поиска зависимостей (не будем показывать пальцем) я погрузился в их тестирование. В результате ни одно из решений мне не подошло, поскольку:
1. Время поиска зависимостей было не оправдано велико
2. Мне удалось найти случаи, когда зависимость не находилась
3. Не было той гибкости в настройках поиска, какой мне хотелось

Разочаровавшись в результатах, мы с коллегами решили создать свое решение, которое будет отвечать всем нашим требованиям. В результате чего появилось дополнение для SSMS под названием «SQL Refactor Studio». С того времени прошло более трех лет, на протяжении которых мы тщательно работали над улучшением данной функции.

Итак, для начала скачиваем и устанавливаем бесплатный Addin для SSMS 2012 (на данный момент Addin интегрирован только с SSMS 2012, но работает со всеми версиями SQL Server).
Выбираем в Object Explorer интересующий нас объект базы данных и в контекстном меню выбираем «SQL Refactor Studio=>Find usages…» (можно также воспользоваться комбинацией Shift+Ctrl+D).

Картинка с другого сайта.

В диалоге выбираем нужные нам опции.

Картинка с другого сайта.

Тут имеется три группы опций.
1. Опции поиска в базах данных
2. Опции поиска в файлах на жестком диске
3. Опции поиск в SSMS Query Editor (редактор SQL запросов)

Итак, по порядку:

Выбираем базы данных, в которых хотим провести поиск зависимостей. По умолчанию выбрана текущая БД. ( В будущем мы планируем добавить возможность анализа БД на других SQL серверах.)
Поставив галочку «Find usages in string literals» - мы говорим анализатору искать зависимости в строковых константах (удобно, когда полно динамического SQL кода).
Опция «Search only in DML statements» - указывает анализатору искать зависимости только в DML инструкциях (INSERT, UPDATE, DELETE, MERGE), всё остальное будет игнорироваться (т.н. я хочу найти только те места, где происходит обновление таблицы).

При желании можно проанализировать открытые в редакторе запросов скрипты. Для этого ставим галку «Enable find usages in the SSMS query editor».

Чтобы просканировать на предмет зависимости файлы на диске, включаем опцию «Enable find usages in the local files». Можно указать через запятую расширения файлов, в которых будет осуществляться поиск. С помощью кнопки «+» добавляем директории, в которых будет вестись поиск (включая вложенные папки).

Нажимаем кнопку «Next», и практически через мгновение начинаем получать результаты.

Картинка с другого сайта.

В левой части формы расположена древовидная структура результатов поиска. Его можно отфильтровать, введя маску в поле «Type words to search for». Кликнув по названию объекта, в правой части формы отобразится его код.
Найденные зависимости выделены желтым фоном и красным цветом. Можно развернуть узел с названием объекта и получить список зависимостей, навигация по которым приводит к позиционированию в SQL коде.
Синим цветом выделены неявные места использования объекта (это результат поиска в строках или файлах).

Картинка с другого сайта.

Как видно из примера анализ на SQL Server’е не ограничивается только выбранными базами данными. При наличии соответствующих прав, анализатор запросов может забуриться даже в Job'ы, server triggers.
Вот такая получилась фича. Надеюсь, она кому-нибудь еще сэкономит кучу времени…

Вопросы и предложения можно излагать на форуме

Комментарии


  • Спасибо! Добавил в закладки.

  • 06 сентября 2013, 05:18 SQL Refactor Studio Team

    New version v2.0 available:

    1. Added format SQL code function (in main menu "SQL Refactor Studio=>Query Editor=>Format code")
    2. Add SSMS 2014 support
    3. Fix error on try connect to SSAS.
    4. Add UAC check

    Go to http://sqlrefactorstudio.com/Home/Download to download latest version



Необходимо войти на сайт, чтобы оставлять комментарии