Итак, поиск по серверу MS SQL...
Дело в общем-то нехитрое, но до сих пор я ничего такого не встречал. Да и не особенно нужно-то было поначалу... Однако, когда общий размер кода на SQL-серверах нашей компании стал исчисляться сотнями тысяч строк, стали возникать неизбежные проблемы при переименовании обьектов, удалении старых и создании новых. Ссылочная целостность в таблицах - это хорошо, но она абсолютно отсутствует в остальных обьектах. Согласен, немного помогает просмотр зависимостей обьекта, но как-то уж очень немного... В результате все чаще стали возникать ситуации, когда действия одного SQL-программиста нарушали работу другого. Доходило даже до ссор...
А еще (вы наверное будете смеяться) - мы каждый год переходили на БД с другим названием (год был частью названия). Это было наследием темного прошлого, но мы с этим мирились, так как переписывать весь код не было ни времени ни людских ресурсов. Поэтому ежегодно, перед каждым из нас стояла задача отыскать в своем коде ссылки на старую БД и заменить их на новую. Тихий ужас...
Или вот еще пример: решено переименовать (или изменить тип) поле в таблице. Сразу же, естественно, требуется отыскать все SQL-обьекты, в которых упоминается это поле и провести в них те же изменения. Вот тут и возникает риск что-нибудь пропустить, особенно, если SQL-обьект находится на другом сервере и был написан пару лет назад...
Думаю я убедил вас в необходимости этой программы, поэтому перехожу к ее описанию.
Программа проста, и вся ее функциональность находится на одной форме. Главная форма как всегда разделена на две части левую и правую. Слева находится список MS SQL серверов, по которым будет производиться поиск. Справа же находится окно результатов поиска в виде дерева, в котором располагаются найденные обьекты, выстроенные в соответствующей иерархии (Сервер \ БД \ категория \ обьект).
Само главное окно выглядит следующим образом:
Что нужно для того, чтобы начать поиск? Совсем немного:
Первое, что необходимо - задать список серверов. Для этого щелкните правой кнопкой мыши в области списка серверов и выполните команду "New". При этом появится форма редактирования свойств нового сервера:
Здесь вы можете указать имя сервера вручную или выбрать его из списка, который обычно уже имеется в вашей операционной системе, если вы с этими серверами работаете. (Рядом с полем для ввода имени сервера, есть кнопка обновления списка имеющихся серверов).
Так же можно указать, каким образом будет проводиться авторизация при подключении к серверу. Это может быть как встроенная система WinNT-безопасности, которая использует для подключения Вашу текущую учетную запись в системе, так и обычный SQL-логин с паролем, которые Вы можете указать в соответствующих полях.
Дополнительно, Вы можете сразу указать, будет ли данный сервер участвовать в поиске.
После нажатия на кнопку "Ok", новый сервер появится в общем списке серверов.
Затем остается только отметить, какие из серверов будут участвовать в поиске. Для того чтобы включить сервер в поиск или выключить его из поиска, можно щелкнуть правой кнопкой мыши слева от иконки сервера, устанавливая или снимая флаг участия.
Ну и напоследок, нужно ввести саму фразу для поиска в соответствующее текстовое поле и нажать кнопку "Search Now".
Программа будет по очереди подключаться к каждому серверу и сканировать на нем все БД, которые доступны при заданном способе подключения. (Надеюсь Вы знаете, что для каждого из логинов на сервере можно указывать, к каким БД и обьектам этот логин будет иметь доступ.)
После завершения поиска в правой части главного окна появится дерево обьектов, содержащих искомую фразу. Вы можете путешествовать по этому дереву, отыскивая среди обьектов те, что вам нужны. После того, как вы выбрали нужный обьект, Вам остается сделать двойной щелчек мышью на нем, чтобы перейти к его редактированию.
Здесь следует отметить, что у Вас на ПК уже должен быть установлен пакет разработчика (клиентская часть установки MS SQL-сервера) для версии сервера 7 или выше, так как для редактирования обьектов вызывается программа ISQLW.EXE (SQL Query Analyzer).
При вызове обьекта на редактирование, программа считывает тект обьекта, сохраняет его в файл и вызывает Query Analyzer с именем этого файла в параметрах. При этом, в параметрах же, Query Analyzer-у дается указание соединиться с той БД, в которой находится обьект. Авторизация используется та, которую Вы указали в свойствах сервера.
Ну и напоследок посмотрим на форму настроек программы, которая вызывается из главного меню (Tools => Options).
Здесь несколько параметров, которые могут помочь при работе с программой:
1) "Ignore SQL errors and continue search" - Игнорировать ошибки и продолжать поиск.
Здесь идет речь о том, что во время поиска программа может пытаться подключиться к серверу или БД, на которые у Вас нет прав. В этом случае, если флаг сброшен, будет выдаваться сообщение об ошибке и поиск будет останавливаться. Если же флаг установить - такие ошибки будут пропускаться.
2) "Mark lines with founded text" - Отмечать строки с найденным текстом.
Если установить этот флаг, то, при открытии текста обьекта в Query Analyzer-е, Вы увидите, что искомый текст выделен своего рода "подстрочниками" - закомментированными строками в виде " -- ^ ". Иногда это бывает довольно полезно...
3) "Folder with Query Analyzer (isqlw.exe)" - Папка, в которой находится Query Analyzer - основной редактор SQL-обьектов.
Хотя программа при старте сама пытается найти эту папку, это может ей и не удаться. В таком случае Вы можете ей помочь, указав нужную папку вручную.
|