📜  在 SQL Server 中检查表的依赖关系

📅  最后修改于: 2022-05-13 01:55:10.952000             🧑  作者: Mango

在 SQL Server 中检查表的依赖关系

作为 SQL DBA,您可能需要使用 SQL Server Management Studio 或 SQL Query 在 SQL Server 中查找表的依赖项。在更改或删除任何表时获得有关依赖项的信息将很有用。

使用 SQL Server Management Studio 在 SQL Server 中查找表依赖项:
第1步 :
展开数据库,展开表,右键单击表名。

第2步 :
单击查看依赖项。

使用 SQL Quires 在 SQL Server 中查找表依赖项。
方法一:
使用 SP_DEPENDS 存储过程。它将返回对指定对象的所有依赖项,包括表、视图、存储过程、约束等。
询问 -

Use DatabaseName ;
EXEC sp_depends @objname = N'ObjectName' ;

示例-1:

Use SQL_DBA ;
EXEC sp_depends @objname = N'[dbo].[tbl_Errors_Stats]' ;

输出 :

nametype
dbo.usp_FetchStatisticsstored procedure
dbo.usp_PostStatistics_Updatestored procedure
dbo.usp_Update_theStatisticsstored procedure

方法2:
询问 -

Use DatabaseName ;
SELECT * FROM sys.dm_sql_referencing_entities('ObjectName', 
                      'OBJECT') ;

示例-1:

use SQL_DBA ;
SELECT * FROM sys.dm_sql_referencing_entities('[dbo].[tbl_Errors_Stats]',
                                   'OBJECT') ;

输出 :

referencing
_schema_name
referencing
_entity_name
referencing
_id
referencing
_class
referencing
_class_desc
is_caller
_dependent
dbousp_FetchStatistics5975771671OBJECT_OR_COLUMN0
dbousp_PostStatistics
_Update
5815771101OBJECT_OR_COLUMN0
dbousp_Update
_theStatistics
5655770531OBJECT_OR
_COLUMN
0

方法3:
询问 -

SELECT ROUTINE_SCHEMA,
      ROUTINE_NAME,  
      ROUTINE_TYPE,
      ROUTINE_DEFINITION  
FROM INFORMATION_SCHEMA.ROUTINES  
WHERE ROUTINE_DEFINITION LIKE '%ObjectName%'

示例-1:

use SQL_DBA

SELECT ROUTINE_SCHEMA,
ROUTINE_NAME, 
ROUTINE_TYPE
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%tbl_Errors_Stats%'

输出 :

ROUTINE_SCHEMAROUTINE_NAMEROUTINE_TYPE
dbousp_Update_theStatisticsPROCEDURE
dbousp_PostStatistics_UpdatePROCEDURE
dbousp_FetchStatisticsPROCEDURE

方法4:
询问 -

SELECT *
FROM sys.sql_expression_dependencies A, sys.objects B
WHERE referenced_id = OBJECT_ID(N'ObjectName') AND  
 A.referencing_id = B.object_id  

GO

示例-1:

use SQL_DBA

SELECT referenced_id, referenced_database_name, referenced_schema_name, name
FROM sys.sql_expression_dependencies A, sys.objects B
WHERE referenced_id = OBJECT_ID(N'tbl_Errors_Stats') AND
A.referencing_id = B.object_id 

GO

输出 :

referenced_idreferenced_database_namereferenced_schema_namename
613577224SQL_DBAdbousp_Update_theStatistics
613577224SQL_DBAdbousp_PostStatistics_Update
613577224SQL_DBAdbousp_FetchStatistics