我使用 SQL Server 2008,我有一个包含 1500 多列和大约 500 个存储过程的数据库,并且......
我想重命名一个具有多个关系并在许多存储过程和视图中引用的表,并且...。
如何获取与该表有关系的数据库中的所有项目?
谢谢。
我使用 SQL Server 2008,我有一个包含 1500 多列和大约 500 个存储过程的数据库,并且......
我想重命名一个具有多个关系并在许多存储过程和视图中引用的表,并且...。
如何获取与该表有关系的数据库中的所有项目?
谢谢。
使用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'
如果您需要按名称查找数据库对象(例如表、列、触发器) - 请查看名为SQL Search的免费Red-Gate 工具,它会在您的整个数据库中搜索任何类型的字符串。
对于任何 DBA 或数据库开发人员来说,它都是一个很棒的必备工具——我是否已经提到它完全免费用于任何用途?
这是我找到的另一个解决方案。您不必安装任何工具。只需在查询分析器上运行。
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
如果你想要数据库项目的参考,如表、列、过程等。
可以使用visual-expert工具,我们可以分析代码SqlServer代码
更多信息:https ://www.visual-expert.com/EN/visual-expert-documentation/code-cross-references/