Чистка базы от неиспользуемых таблиц. Связка таблиц с процедурами

xxxxxxx
Дата: 30.01.2009 13:27:41
Сервер MS SQL 2005

Задача в следующем: существует список таблиц, которые предположительно уже не нужны. Принято решение переименовать их c постфиксом _OLD.
НО, эти таблицы могут быть использованы в текстах процедур и хотелось бы узнать список этих процедур и определить их необходимость. Замечу, что найти в текстах процедур (syscomments) встречающиеся имена таблиц я могу, но как определить, что в тексте процедуры это выражение не закомментарено??
Список процедур в которых могут встречаться имена этих таблиц достаточно обширен (около 1000), поэтому вручную перебирать не хочется..

Есть ли возможность запустить процедуру с использованием NOEXEC не зная параметров процедур с целью перекомпиляции и получения сообщения об ошибке в случае участвия таблиц в запросах?
Паганель
Дата: 30.01.2009 13:29:13
А если в процедурах используется динамический SQL?
xxxxxxx
Дата: 30.01.2009 13:34:13
Паганель
А если в процедурах используется динамический SQL?

Да,....
Про динамический я не подумал... Значит придется в начале искать по текстам процедур, а потом все равно вручную каждую проверять....
iap
Дата: 30.01.2009 14:05:03
xxxxxxx
Значит придется в начале искать по текстам процедур, а потом все равно вручную каждую проверять....
А если имя таблицы в динамическом запросе генерируется какой-нибудь процедурой или функцией?
Например, в следующем примере найдите-ка имя таблицы или view!
EXEC(N'SELECT TOP 100 * FROM '+N's'+N'y'+N's'+N'o'+N'b'+N'j'+N'e'+N'c'+N't'+N's');
GreenSunrise
Дата: 30.01.2009 14:17:30
Вот для этого умные люди давно придумали автоматические тесты, а еще есть такое мудрое словосочетание "модульное тестирование"... Затраты на разработку, разумеется, возрастают, но они окупают себя во многих ситуациях, пример которой и привел автор вопроса.
Glory
Дата: 30.01.2009 14:19:06
Если у таблиц есть кластерные индексы, то возможно поможет анализ использования этих индексов
Taffy
Дата: 30.01.2009 14:21:38
GreenSunrise
Вот для этого умные люди давно придумали автоматические тесты, а еще есть такое мудрое словосочетание "модульное тестирование"... Затраты на разработку, разумеется, возрастают, но они окупают себя во многих ситуациях, пример которой и привел автор вопроса.

А самые умные и неленивые пишут доки :)
locky
Дата: 30.01.2009 14:29:48
Можно взять набор тулов от RedGate
там в комплект входит анализатор зависимостей.
DSQL нужно будет проверить дополнительно ручками.

-------------------------
There’s no silver bullet!
GreenSunrise
Дата: 30.01.2009 14:56:04
Taffy
GreenSunrise
Вот для этого умные люди давно придумали автоматические тесты, а еще есть такое мудрое словосочетание "модульное тестирование"... Затраты на разработку, разумеется, возрастают, но они окупают себя во многих ситуациях, пример которой и привел автор вопроса.

А самые умные и неленивые пишут доки :)

Написание доков не спасает от изменения в коде... Даже самых умных не спасает. А вот грамотный набор тестов - спасает.