Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как найти ссылающиеся на указанное поле указанной таблицы sp?  [new]
aPT11
Guest
Задача стоит следующая:
есть много больших хранимых процедур. И в этих процедурах меняю запросы. Часть обращений с одного поля одной таблицы перевожу на одноименное поле другой таблицы.
Процедуры большие, обращений много надо править.
Надо проконтролировать себя и получить список зависимых от данного поля первой таблицы хранимых процедур.
Я могу получить зависимости процедур от таблиц, но мне надо именно от конкретного поля нужной таблицы знать зависимости.
12 янв 07, 10:58    [3631089]     Ответить | Цитировать Сообщить модератору
 Re: Как найти ссылающиеся на указанное поле указанной таблицы sp?  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

ищите имя этого поля в syscomments.
declare @MyText nvarchar(4000)
set @MyText = '%fieldName%'

select
  so.xtype
  , so.name
from dbo.sysobjects so
where exists (select *
              from syscomments sc1
                left join syscomments sc2 on
                  sc1.id = sc2.id
                  and sc1.colid + 1 = sc2.colid
              where
                sc1.id = so.id
                and (right(sc1.text, 2000) + left(isnull(sc2.text, ''), 2000) like @MyText
                     or sc1.text like @MyText)
             )
order by
  so.xtype
  , so.name


Posted via ActualForum NNTP Server 1.3

12 янв 07, 11:02    [3631124]     Ответить | Цитировать Сообщить модератору
 Re: Как найти ссылающиеся на указанное поле указанной таблицы sp?  [new]
aPT11
Guest
Не, это без учета таблицы. Результат запроса до переделки процедур и после не изменится
12 янв 07, 12:04    [3631711]     Ответить | Цитировать Сообщить модератору
 Re: Как найти ссылающиеся на указанное поле указанной таблицы sp?  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10232
Блог
aPT11
Не, это без учета таблицы. Результат запроса до переделки процедур и после не изменится

Изменяется...изменяется!!!!
но только после первого вызова УЖЕ НОВОВОЙ процедуры, так как первая компиляция происходит при первом её вызове и смена версии и изменение значения в syscomments.
12 янв 07, 12:08    [3631738]     Ответить | Цитировать Сообщить модератору
 Re: Как найти ссылающиеся на указанное поле указанной таблицы sp?  [new]
aPT11
Guest
Название поля не меняется, поля с аналогичными названиями есть и в других таблицах. Где в приведенном запросе фигурирует связка поле+таблица?
Поиск строки вида "таблица.поле" тоже не даст особых результатов. И во всех этих хранимых процедурах до и после изменений будут запросы к обоим таблицам.
12 янв 07, 12:18    [3631799]     Ответить | Цитировать Сообщить модератору
 Re: Как найти ссылающиеся на указанное поле указанной таблицы sp?  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

информация об используемых в процедуре полях таблиц нигде
постоянно не хранится. информацию о самих таблицах еще можно
получить из sysdepends, но имейте в виду, что она может быть некорректной.
так что единственный вариант - поиск по текстам процедур.

Posted via ActualForum NNTP Server 1.3

12 янв 07, 12:27    [3631860]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Как найти ссылающиеся на указанное поле указанной таблицы sp?  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8823
daw,
+1
(спасибо Яндексу, кстате)
4 авг 12, 15:41    [12962215]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить