Поиск произвольного текста в БД MSSQL Server

добавлено: 05 сен 13
понравилось:0
просмотров: 3543
комментов: 1

теги:

Автор: SQL Refactor Studio Team

В продолжение статьи Поиск зависимостей объекта в БД MSSQL Server...

Рассмотрим для примера следующую ситуацию...
Вам, как разработчику БД MS SQL, говорят: "При работе с базой вылетает ошибка <Transfer is unavailable>. Прошу быстро починить! Очень срочно! Бла-бла-бла... ". Ну короче как обычно, пользователь забывает бизнес-логику, и начинает ругать программиста.
Вам нужно найти код, который генерирует данную ошибку, проанализировать его (при необходимости исправить).

Опять же, можно использовать системные представления:
SELECT 
  OBJECT_NAME(sc.id) AS obj_name
FROM syscomments sc
WHERE 
  sc.[text] LIKE '%Transfer is unavailable%'

Далее, мы находим каждый объект в Object Explorer, скриптуем его, анализируем код... И так для каждой строчки ResultSet.
Получается довольно долгий процесс (особенно если Вы тоже не знаете бизнес логику ;) ).

А хотите получить всю необходимую Вам информацию за пару секунд?
Если "Да", скачиваете и устанавливаете бесплатный Addin для SSMS 2012.
Находясь в Object Explorer в контекстном меню выберите "SQL Refactor Studio=>Find code usages.." (или Shift+Ctrl+F).
В появившемся окне вводим текст, который мы хотим найти.
Про работу с остальными опциями можно почитать здесь.
Если вкратце, то можно просканировать файлы на диске и открытые запросы в SSMS.
Нажимаем кнопку "Next" и получаем результат в удобном для анализа виде.

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

Комментарии


  • 1. Ошибка подобного рода может генерироваться только в процедуре и триггере соотв. только их и нужно анализировать.
    2.Может так случиться что текст ошибки храниться в какой-нить табличке и тогда таким методом его не найти. Вообще хорошо когда в ошибке указано имя процедуры/триггера которая ее вызвала - можно просто добавить к тексту ошибки + object_name(@@procID).



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