Переименование объекта в БД MS SQL Server

добавлено: 26 сен 13
понравилось:0
просмотров: 2020
комментов: 0

теги:

Автор: SQL Refactor Studio Team

Привет Дорогой читатель!
Сегодня речь пойдет о безопасном переименовании объектов в MS SQL Server посредством SQL Refactor Studio (надстройки для SSMS).

Немного истории:
Работая, в свое время, в IT-отделе в одном автомобильном холдинге я наблюдал как тамошний разработчик проводил чистку мусора в базе (прямо на продакшене!). Он открывал список таблиц/процедур, визуально пробегался по нему, и тем объектам, которые он считает что они ни где не используются, добавлял на начало имени несколько подчеркиваний (__). Если в течении месяца ему не сообщают о том, что отвалился какой-то функционал в ПО, он смело удалял ранее помеченные объекты.

Работая в SSMS, нельзя полагаться на принцип "Компилируется - значит работает!". Любое изменение уже существующего объекта (добавил/удалил/переименовал поле/параметр в процедуре, переименовал таблицу/функцию) чревато ошибками. Давайте подумаем, у нас есть объект БД и мы хотим его изменить (или переименовать, удалить), где бы он мог бы у нас использоваться?
Возможные варианты:
- в базе, где находится сам объект
- в базах на том же сервере
- в клиентских приложениях (настольные приложения, сайты и т.д)
- в кубах (Analysis Service)
- в SSIS пакетах (Integration Service)
- в отчетах на Reporting Service

Подробнее о поиске зависимостей здесь...

SQL Refactor Studio позволяет быстро и безопасно переименовать объект не только в базах данных, но и в коде приложений работающих с базой объекта.
Для переименования объекта выбираем его в окне Object Explorer и нажимаем "Shift+Ctrl+R" (также можно воспользоваться главным/контекстным меню).

В появившемся диалоге:
  • вводим новое имя объекта
  • выбираем базы данных для поиска зависимостей
  • указываем папки с исходниками (нужно не забыть взять последнюю версию из системы контроля версий)
    и задаем маску для файлов: *.cs, *.aspx, *.cshtml, *.sql и т.д (*.* - ищем по всем файлам).

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

    Нажимаем "Далее", ждем немного пока строится дерево зависимостей.
    Далее нам нужно выбрать, какие из найденных совпадений мы хотим заменить (проставить галки).

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

    По умолчанию выбраны только явные обращения к объекту (только в ветке БД). Если анализатор находит в теле процедуры (или текстового файла) строку, содержащую имя объекта, по умолчанию он не будет ее переименовывать. Это остается на Ваше усмотрение. Явные обращения выделены красным цветом, неявные - синим.
    Указав что необходимо переименовать, нажимаем "Далее", делаем предпросмотр изменений в базах и локальных файлах.

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

    Если все нормально, нажимаем "Завершить".

    При этом происходит следующее:
  • Делается резервная копия всех объектов баз данных, файлов на диске, подлежащих изменению.
  • Для каждой БД генерируется скрипт в окне Query Editor (никаких изменений в БД не происходит)
  • Происходит переименование в локальных файлах (непосредственно что Вы отметили галочками).

    Далее Вам нужно просто запустить полученные скрипты, при желании можно их модифицировать.
    Важно: Если в процессе выполнения скрипта возникнет ошибка, всё останется как есть, все изменения завернуты в транзакцию.

    Желаю успехов!
  • Комментарии




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