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

Откуда:
Сообщений: 274
Допустим у меня на ms sql server 2008 r2 есть бд Base1. В ней множество хранимых процедур. Есть таблица в бд Table1. Мне нужно узнать, какие хранимые процедуры в процессе исполнения могут затрагивать столбец stolb1 в этой таблице, т.е. в коде которых есть обращение к Table1.dbo.stolb1. Как это узнать не открывая каждую хранимку и не делая Ctrl+F ?
29 фев 12, 06:36    [12167406]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по коду множества хп  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6202
exec sp_depends 'dbo.Table1';

exec sp_depends 'dbo.Procedure1';
29 фев 12, 06:44    [12167412]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по коду множества хп  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
select * from sys.objects
where type = 'P'
 and object_definition( object_id ) like '%Table1%'
 and object_definition( object_id ) like '%stolb1%'


+

sys.sql_expression_dependencies
29 фев 12, 06:46    [12167413]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по коду множества хп  [new]
Rudge
Member

Откуда:
Сообщений: 274
exec sp_depends 'dbo.Table1';


Почему-то в списке нет процедуры, в которой
INSERT INTO dbo.Table1...
. WTF?
29 фев 12, 08:08    [12167465]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по коду множества хп  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Rudge
exec sp_depends 'dbo.Table1';


Почему-то в списке нет процедуры, в которой
INSERT INTO dbo.Table1...
. WTF?


не используйте sp_depends - атавизм

if object_id ( 'dbo.TestP', 'P' ) is not null
  drop procedure dbo.TestP;
go

create procedure dbo.TestP
as
insert into dbo.Table1
select 1, 2, 3
go

if object_id ( 'dbo.Table1', 'U' ) is not null
  drop table dbo.Table1;
go

create table dbo.Table1 ( val1 int, val2 int, val3 int );
go

exec sp_depends 'dbo.Table1';
/*
Результат:
--------------------
Object does not reference any object, and no objects reference it.
*/

select object_name( referencing_id ) as ObjName
  from sys.sql_expression_dependencies
  where referenced_id = object_id ( 'dbo.Table1', 'U' );

/*
Результат:
--------------------
TestP
*/
29 фев 12, 08:22    [12167490]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по коду множества хп  [new]
Rudge
Member

Откуда:
Сообщений: 274
А как найти именно те хп-ы, которые работают со столбцом Table1.dbo.stolb1 ?
29 фев 12, 09:20    [12167642]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по коду множества хп  [new]
mike909
Member

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

С некоторой вероятностью, так:
declare @Tbl sysname, @Col sysname
SELECT @Tbl = 'Table1', @Col = 'stolb1'

SELECT QUOTENAME(s.name) + '.' + QUOTENAME(obj.name) as [name], obj.type_desc, obj.type
FROM sys.sql_modules as m
INNER JOIN sys.objects as obj on
  obj.[object_id] = m.[object_id]
INNER JOIN sys.schemas as s on
  s.[schema_id] = obj.[schema_id]
WHERE CHARINDEX(@Tbl, m.[definition]) != 0 and CHARINDEX(@Col, m.[definition]) != 0
29 фев 12, 09:25    [12167659]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по коду множества хп  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Rudge
А как найти именно те хп-ы, которые работают со столбцом Table1.dbo.stolb1 ?


12167413
29 фев 12, 09:33    [12167683]     Ответить | Цитировать Сообщить модератору
 Re: Поиск по коду множества хп  [new]
Penner
Member

Откуда:
Сообщений: 342
http://www.red-gate.com/products/sql-development/sql-search/
29 фев 12, 11:42    [12168453]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить