确定哪些对象引用表中的SQL Server(Determine Which Objects Refe

2019-08-03 04:32发布

我与SQL Server 2008工作,我有一个拥有超过1500列和500存储过程和...的数据库。

我想重命名有一些关系,在很多存储过程和视图,并引用的表...。

如何我可以得到具有与此表的关系数据库中的所有项目?

谢谢。

Answer 1:

如果你需要按名称查找数据库对象(如表,列,触发器) -看看称为自由红门工具SQL搜索该做到这一点-它搜索整个数据库的任何类型的字符串(S)的。

这对任何DBA或数据库开发人员有很大必备的工具-为什么我已经提到它的绝对自由使用任何类型的使用?



Answer 2:

使用sys.dm_sql_referencing_entities

SELECT 
    referencing_schema_name, referencing_entity_name, referencing_id, 
    referencing_class_desc, is_caller_dependent
FROM 
    sys.dm_sql_referencing_entities ('mySchemaName.myTableName', 'OBJECT');
GO

其中, 'mySchemaName.myTableName'是你schema.table,例如'dbo.MyTable'



Answer 3:

这是另一种解决办法,我发现。 您不必安装任何工具。 刚上查询分析器运行。

Use [Database]
Go

SELECT
referencing_schema_name = SCHEMA_NAME(o.SCHEMA_ID),
referencing_object_name = o.name,
referencing_object_type_desc = o.type_desc,
referenced_schema_name,
referenced_object_name = referenced_entity_name,
referenced_object_type_desc = o1.type_desc,
referenced_server_name, referenced_database_name
--,sed.* -- Uncomment for all the columns
FROM
sys.sql_expression_dependencies sed
INNER JOIN
sys.objects o ON sed.referencing_id = o.[object_id]
LEFT OUTER JOIN
sys.objects o1 ON sed.referenced_id = o1.[object_id]
WHERE
referenced_entity_name = 'SP_Pay_GetData'
order by referencing_object_name


文章来源: Determine Which Objects Reference a Table in SQL Server