If you want to see how Microsoft does it in SQL Server Management Studio (SSMS):
mssqltips.com/tipimages/1294_sqlcode.txt
DECLARE @TableName nvarchar(50)
DECLARE
@TableNameSchema nvarchar(50)
DECLARE @TableNameDb nvarchar(50)
SET @TableName = N'Product'
SET
@TableNameSchema = N'dbo.'
+ @TableName
SET @TableNameDb = N'DbNameHere.dbo.' + @TableName
CREATE TABLE #dependents (obj_name nvarchar(255), obj_type nvarchar(255), obj_source nvarchar(30))
CREATE TABLE #msdependencies (oType nvarchar(255), oObjName nvarchar(255), oOwner nvarchar(255), oSequence nvarchar(255))
INSERT INTO #msdependencies (oType, oObjName, oOwner, oSequence)
EXEC sp_MSdependencies @TableNameSchema, null, 1315327
INSERT INTO #dependents (obj_name, obj_type, obj_source)
SELECT
oOwner +
'.' + oObjName AS obj_name,
CASE
oType
WHEN
1 THEN 'function'
WHEN
4 THEN 'view'
WHEN
8 THEN 'table'
WHEN
16 THEN 'stored
procedure'
ELSE
'(other - ' + CAST(oType as varchar) + ')'
END
AS obj_type,
'sp_MSDependencies'
AS obj_source
FROM
#msdependencies
DROP TABLE #msdependencies
INSERT INTO #dependents (obj_name, obj_type, obj_source)
SELECT DISTINCT
OBJECT_SCHEMA_NAME(so.id) + '.' + so.name,
CASE so.[type]
WHEN
'TF' THEN 'table function'
WHEN
'IF' THEN 'inline function'
WHEN
'FN' THEN 'scalar function'
WHEN
'V' THEN 'view'
WHEN
'P' THEN 'stored procedure'
ELSE
'(other - ' + so.[type] + ')'
END
AS obj_type,
'sysComments'
FROM syscomments sc
INNER JOIN sysobjects so ON sc.id = so.id
WHERE charindex(@TableName, text) > 0
INSERT INTO #dependents (obj_name, obj_type, obj_source)
SELECT DISTINCT
SPECIFIC_SCHEMA + '.' +
SPECIFIC_NAME,
CASE
ROUTINE_TYPE
WHEN
'FUNCTION' THEN 'function'
WHEN
'PROCEDURE' THEN
'stored procedure'
ELSE
'(other - ' +
ROUTINE_TYPE + ')'
END
AS obj_type,
'information_schema.routines'
FROM information_schema.routines ISR
WHERE CHARINDEX(@TableNameSchema,
ISR.ROUTINE_DEFINITION)
> 0
INSERT INTO #dependents (obj_name, obj_type)
EXEC sp_depends @objname
= @TableNameDb
UPDATE #dependents SET obj_source = 'sp_depends' WHERE
obj_source IS NULL
-- Also, less useful, but could be added:
-- SELECT * FROM
sys.dm_sql_referencing_entities (N'dbo.Product', N'OBJECT')
-- SELECT * FROM
sys.dm_sql_referenced_entities (N'dbo.Product', N'OBJECT')
--SELECT DISTINCT
obj_name, obj_type, obj_source FROM #dependents ORDER BY obj_name, obj_type,
obj_source
SELECT
obj_name,
CASE WHEN MIN(obj_type) != 'function' THEN MIN(obj_type)
ELSE MAX(obj_type) END AS obj_type,
CASE
obj_type
WHEN 'inline function' THEN
'function'
WHEN 'scalar function' THEN
'function'
WHEN 'table function' THEN 'function'
ELSE
obj_type
END AS obj_category
FROM #dependents
GROUP BY
obj_name,
CASE
obj_type
WHEN 'inline function' THEN
'function'
WHEN 'scalar function' THEN
'function'
WHEN 'table function' THEN 'function'
ELSE
obj_type END
ORDER BY obj_category,
obj_name
DROP TABLE #dependents
Thanks to Greg Robidoux:
mssqltips.com/sqlservertip/1294/listing-sql-server-object-dependencies/
Thanks to Pinal Dave:
blog.sqlauthority.com/2010/02/04/sql-server-get-the-list-of-object-dependencies-sp_depends-and-information_schema-routines-and-sys-dm_sql_referencing_entities/