【发布时间】:2012-11-13 20:12:44
【问题描述】:
我使用 SQL Server 2008,我有一个包含 1500 多列和大约 500 个存储过程的数据库以及...。
我想重命名一个具有多个关系并在许多存储过程和视图中引用的表以及...。
如何获取数据库中与该表有关系的所有项目?
谢谢。
【问题讨论】:
标签: sql-server-2008 table-rename
我使用 SQL Server 2008,我有一个包含 1500 多列和大约 500 个存储过程的数据库以及...。
我想重命名一个具有多个关系并在许多存储过程和视图中引用的表以及...。
如何获取数据库中与该表有关系的所有项目?
谢谢。
【问题讨论】:
标签: sql-server-2008 table-rename
如果你想要表、列、过程等数据库项目的引用。
可以使用visual-expert工具,我们可以分析代码SqlServer代码
更多信息:https://www.visual-expert.com/EN/visual-expert-documentation/code-cross-references/
【讨论】:
这是我找到的另一个解决方案。您不必安装任何工具。只需在查询分析器上运行即可。
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
【讨论】:
使用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'
【讨论】:
'OBJECT' 作为第二个参数。 SQL Server 中的默认架构是 dbo,所以这可能是您的架构。
如果您需要按名称查找数据库对象(例如表、列、触发器) - 请查看名为 SQL Search 的 FREE Red-Gate 工具 - 它会搜索您的整个任何类型字符串的数据库。
对于任何 DBA 或数据库开发人员来说,它都是必备工具 - 我是否已经提到它绝对免费可用于任何用途??
【讨论】: