Skip to content

Commit 75174a5

Browse files
committed
Create schema dependencies.sql
1 parent 4917a32 commit 75174a5

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

schema dependencies.sql

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
2+
SELECT DISTINCT
3+
referenced_database_name = db_name()
4+
, referencing_entity_name = s_ing.name + '.' + OBJECT_NAME(referencing_id)
5+
, referencing_type_desc = o_ing.type_desc + CASE WHEN cc.is_persisted = 1 THEN ' PERSISTED' ELSE '' END + CASE WHEN cc.column_id is not null THEN ' COMPUTED COLUMN' ELSE '' END
6+
, referencing_minor_object = case WHEN REFERENCING_CLASS_DESC = 'OBJECT_OR_COLUMN' THEN COALESCE(COL_NAME(referencing_id, referencing_minor_id), '(n/a)')
7+
WHEN REFERENCING_CLASS_DESC = 'INDEX' THEN i.name
8+
ELSE '(n/a)'
9+
END
10+
, referencing_class_desc = CASE WHEN referencing_class_desc = 'INDEX' and i.has_filter = 1 THEN 'FILTERED INDEX' ELSE referenced_class_desc END
11+
, referenced_class_desc
12+
, referenced_server_name = isnull(referenced_server_name, @@SERVERNAME)
13+
, referenced_database_name = isnull(referenced_database_name, db_name())
14+
--, referenced_schema_name = isnull(referenced_schema_name, 'dbo')
15+
, referenced_entity_name = ISNULL(s_ed.name + '.','') + referenced_entity_name
16+
, referenced_type_desc = ISNULL(o_ed.type_desc, CASE WHEN sed.is_ambiguous = 1 THEN 'reference is ambiguous, resolved at runtime' ELSE 'remote object type not available' END)
17+
, referenced_column_name = COALESCE(COL_NAME(referenced_id, referenced_minor_id), '(n/a)')
18+
--, is_caller_dependent, is_ambiguous
19+
,*
20+
FROM sys.sql_expression_dependencies AS sed
21+
INNER JOIN sys.objects AS o_ing ON sed.referencing_id = o_ing.object_id
22+
LEFT OUTER JOIN sys.objects AS o_ed ON sed.referenced_id = o_ed.object_id
23+
LEFT OUTER JOIN Sys.computed_columns AS cc on cc.object_id = o_ing.object_id and cc.column_id = sed.referencing_minor_id
24+
INNER JOIN sys.schemas s_ing on s_ing.schema_id = o_ing.schema_id
25+
LEFT OUTER JOIN sys.schemas s_ed on s_ed.schema_id = o_ed.schema_id
26+
LEFT OUTER JOIN sys.indexes i on i.index_id = sed.referencing_minor_id and sed.referencing_class_desc = 'INDEX' and i.object_id = o_ing.object_id
27+
--where s_ing.name + '.' + OBJECT_NAME(referencing_id) = 'dbo.SH_MSRS_REPORTTITLE'
28+
order by sed.referenced_entity_name, referencing_entity_name
29+
GO
30+
--reference: https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-expression-dependencies-transact-sql?view=sql-server-ver15
31+
--inspired by https://docs.microsoft.com/en-us/sql/relational-databases/stored-procedures/view-the-dependencies-of-a-stored-procedure?view=sql-server-ver15
32+
33+

0 commit comments

Comments
 (0)