39

我使用 SQL Server 2008,我有一个包含 1500 多列和大约 500 个存储过程的数据库,并且......

我想重命名一个具有多个关系并在许多存储过程和视图中引用的表,并且...。

如何获取与该表有关系的数据库中的所有项目?

谢谢。

4

4 回答 4

59

使用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'

于 2012-11-26T10:57:26.780 回答
16

如果您需要按名称查找数据库对象(例如表、列、触发器) - 请查看名为SQL Search的免费Red-Gate 工具,它会在您的整个数据库中搜索任何类型的字符串。

在此处输入图像描述

在此处输入图像描述

对于任何 DBA 或数据库开发人员来说,它都是一个很棒的必备工具——我是否已经提到它完全免费用于任何用途?

于 2012-11-26T11:30:39.997 回答
12

这是我找到的另一个解决方案。您不必安装任何工具。只需在查询分析器上运行。

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
于 2016-05-02T08:24:55.203 回答
0

如果你想要数据库项目的参考,如表、列、过程等。

可以使用visual-expert工具,我们可以分析代码SqlServer代码

更多信息:https ://www.visual-expert.com/EN/visual-expert-documentation/code-cross-references/

于 2021-07-20T13:01:37.507 回答