Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как узнать какие хранимые процедуры используют таблицу?  [new]
tercat
Member

Откуда:
Сообщений: 15
Я хочу поменять структуру таблицы и опасаюсь как бы это не затронуло работу хранимых процедур. Как узнать какие хранимые процедуры используют заданую таблицу?
27 дек 12, 16:52    [13696369]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать какие хранимые процедуры используют таблицу?  [new]
hallabud
Member

Откуда: Киев
Сообщений: 245
tercat,

в менеджмент студии можно нажать "View dependencies" (посмотреть зависимости)
27 дек 12, 16:54    [13696391]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать какие хранимые процедуры используют таблицу?  [new]
kalimba
Member

Откуда:
Сообщений: 297
tercat,

А также вот еще - http://sqlcodeguard.com/ .
27 дек 12, 17:10    [13696494]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать какие хранимые процедуры используют таблицу?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
tercat
Как узнать какие хранимые процедуры используют заданую таблицу?

Просмотр зависимостей плох тем, что не умеет "заглядывать" в динамический SQL.

Если внутри процедур есть динамический SQL, то относительно надёжный способ — поиск по исходным текстам объектов БД. Например, при помощи такого запроса:
select schema_name(o.schema_id) as Схема, object_name(m.object_id) as Объект
from sys.sql_modules m
     inner join sys.objects o on o.object_id = m.object_id
where m.definition like '%ИмяТаблицы%' -- подставить нужное имя

Правда, возможны нюансы:
— имя таблицы для динамического запроса может собираться по частям (какое-нибудь кустарное секционирование Sales2010, Sales2011, Sales2012);
— сам запрос может храниться в какой-нибудь таблице;
— к таблице может обращаться внешний SQL-сервер;
— к таблице может обращаться внешнее приложение
и т.д.
27 дек 12, 17:12    [13696507]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать какие хранимые процедуры используют таблицу?  [new]
Владимир Затуливетер
Member

Откуда:
Сообщений: 427
tercat,

Тоже использую поиск по тексту процедур, функций и т.д.
Бесплатная тулза (не считая небольшой рекламы), поудобней будет чем просто запросом смотреть.
Интегрируется в SSMS, рекомендую:
http://www.red-gate.com/products/sql-development/sql-search/
27 дек 12, 17:50    [13696685]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать какие хранимые процедуры используют таблицу?  [new]
kalimba
Member

Откуда:
Сообщений: 297
Владимир Затуливетер,

Надо же, бесплатная тулза от RedGate. А есть у них еще чего бесплатного?
27 дек 12, 19:00    [13696935]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать какие хранимые процедуры используют таблицу?  [new]
Владимир Затуливетер
Member

Откуда:
Сообщений: 427
kalimba,

больше ничего нету, по крайней мере для sql server.
27 дек 12, 19:49    [13697026]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать какие хранимые процедуры используют таблицу?  [new]
AnaceH
Member

Откуда:
Сообщений: 109
kalimba,

вот, например
27 дек 12, 21:46    [13697506]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать какие хранимые процедуры используют таблицу?  [new]
asd24
Member

Откуда:
Сообщений: 47
В дополнение советую SQL Assistant (но он платный) - поиск + рефакторинг + много чего "вкусного"
27 дек 12, 22:51    [13697783]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить