Поиск хранимых процедур с ошибками в SQL Server 2008? - PullRequest
2 голосов
/ 13 мая 2011

У меня есть база данных, которая состоит из почти 200 таблиц и 3000 хранимых процедур.

Я удалил некоторые поля из некоторых таблиц. Как теперь найти хранимые процедуры, в которых упоминаются эти удаленные поля?

Ответы [ 4 ]

4 голосов
/ 13 мая 2011

Посмотрите на FREE Red-Gate инструмент под названием SQL Search , который делает это - он ищет во всей вашей базе данных любые типы строк.

enter image description here

enter image description here

Это отличный обязательный инструмент для любого администратора БД или разработчика базы данных - я уже упоминал, что это абсолютно БЕСПЛАТНО для использования в любых целях ??

Таким образом, в вашем случае вы можете ввести имя столбца, который вы удалили, и выбрать для поиска только ваши хранимые процедуры - и в течение секунды или около этого у вас будет список всех сохраненных процедур, содержащих это имя конкретного столбца , Абсолютно классные вещи!

4 голосов
/ 13 мая 2011

Вы можете использовать sys.sql_modules

SELECT
   OBJECT_NAME(object_id)
FROM
   sys.sql_modules
WHERE
   definitiion LIKE '%MyDeletedColumn%'

или OBJECT_DEFINITION

Представления INFORMATION_SCHEMA ненадежны, так как определение разбито на несколько строк nvarchar (4000). 2 вышеуказанных метода возвращают nvarchar (max)

Редактировать: Учитывая, что SQL Search является бесплатным, как замечает marc_s, это будет лучшим решением.

3 голосов
/ 13 мая 2011
select object_name(object_id), *
from sys.sql_module
where definition like '%ColName%'
0 голосов
/ 13 мая 2011

Одним из возможных подходов является вызов каждой хранимой процедуры с фиктивными параметрами с активным SET SHOWPLAN_XML ON. Это не запустит процедуру, но сгенерирует XML-представление плана - и завершится ошибкой, если указанные столбцы отсутствуют. Однако если вы используете таблицы #temp, это не удастся. (

Скорее всего, вы захотите автоматизировать этот процесс, а не записывать 3000 вызовов процедур.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Это не пуленепробиваемый подход к поиску пропущенных столбцов, но удачи в поиске чего-то лучшего!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...