Поиск использования таблицы в объектах базы данных
На днях задался вопросом как найти все объекты (хранимые процедуры, функции, представления и тд), где используется определенная таблица из базы данных.
Ниже представлен SQL код, который ищет по названию объекта (имя таблицы/предтавления и т.п) другие объекты, в которых используется искомый объект и возвращает его название.
select distinct [Table Name] = o.Name, [Found In] = sp.Name, sp.type_desc
from sys.objects o inner join sys.sql_expression_dependencies sd on o.object_id = sd.referenced_id
inner join sys.objects sp on sd.referencing_id = sp.object_id
and sp.type in ('P', 'FN') /*Вставить тот тип объекта, в котором будет происходить поиск*/
where o.name = 'НазваниеИскомойТаблицы' /*Вставить название объекта*/
order by sp.Name
Возможные типы объектов для поиска:
AF = Aggregate function (CLR)
C = CHECK constraint
D = DEFAULT (constraint or stand-alone)
F = FOREIGN KEY constraint
FN = SQL scalar function
FS = Assembly (CLR) scalar-function
FT = Assembly (CLR) table-valued function
IF = SQL inline table-valued function
IT = Internal table
P = SQL Stored Procedure
PC = Assembly (CLR) stored-procedure
PG = Plan guide
PK = PRIMARY KEY constraint
R = Rule (old-style, stand-alone)
RF = Replication-filter-procedure
S = System base table
SN = Synonym
SQ = Service queue
TA = Assembly (CLR) DML trigger
TF = SQL table-valued-function
TR = SQL DML trigger
TT = Table type
U = Table (user-defined)
UQ = UNIQUE constraint
V = View
X = Extended stored procedure
Наиболее обсуждаемые: