如何使用T-SQL获取SQL服务器中最依赖的存储过程?
How to get the most dependent stored procedure in SQL Server using T-SQL?
我正在尝试在 SQL Server Management Studio 2014 中获取最依赖的存储过程。我有一个庞大的数据库,其中包含近 1900 个存储过程、453 个表、768 个视图和 419 个函数。一些存储过程非常大(4089 行),其中嵌套有许多存储过程、视图和函数。我想重新设计架构和软件本身。
我想获取具有依赖对象名称的最依赖存储过程的报告。
我已经搜索过了,但没有找到合适的解决方案。
您可以使用sys.sql_expression_dependencies系统视图。
但是,如果您确实要了解代码模块层次结构,则肯定需要某种可视化工具来将依赖关系图显示为图表。不过,还没有听说市场上有任何东西可以满足您的需求。
您可以通过以下流程找到它们。我只用 149 个存储过程测试了我们的数据库,并用了 1 分钟的时间来获取。
这里我将存储过程名称传递给 object_DEFINITION 函数以了解在哪个过程定义中使用了该名称。
DECLARE @TAB_SP TABLE(ID INT IDENTITY, OBJECTID int, NAME VARCHAR(250))
DECLARE @TAB_SP_DEPENDENCY TABLE (ID INT IDENTITY, NAME VARCHAR(250), SP_COUNT INT)
INSERT INTO @TAB_SP
select object_id,NAME from sys.objects WHERE type='P'
DECLARE @MIN INT =1, @MAX INT = (SELECT MAX(ID) FROM @TAB_SP), @SP_NAME VARCHAR(250)
WHILE (@MIN<=@MAX)
BEGIN
SELECT @SP_NAME=NAME FROM @TAB_SP WHERE ID= @MIN
INSERT INTO @TAB_SP_DEPENDENCY
SELECT @SP_NAME,COUNT(DISTINCT object_id) FROM SYS.OBJECTS
WHERE OBJECT_DEFINITION(object_id) LIKE '%'+@SP_NAME+'%'
SET @MIN=@MIN+1
END
SELECT * FROM @TAB_SP_DEPENDENCY
我正在尝试在 SQL Server Management Studio 2014 中获取最依赖的存储过程。我有一个庞大的数据库,其中包含近 1900 个存储过程、453 个表、768 个视图和 419 个函数。一些存储过程非常大(4089 行),其中嵌套有许多存储过程、视图和函数。我想重新设计架构和软件本身。
我想获取具有依赖对象名称的最依赖存储过程的报告。
我已经搜索过了,但没有找到合适的解决方案。
您可以使用sys.sql_expression_dependencies系统视图。
但是,如果您确实要了解代码模块层次结构,则肯定需要某种可视化工具来将依赖关系图显示为图表。不过,还没有听说市场上有任何东西可以满足您的需求。
您可以通过以下流程找到它们。我只用 149 个存储过程测试了我们的数据库,并用了 1 分钟的时间来获取。
这里我将存储过程名称传递给 object_DEFINITION 函数以了解在哪个过程定义中使用了该名称。
DECLARE @TAB_SP TABLE(ID INT IDENTITY, OBJECTID int, NAME VARCHAR(250))
DECLARE @TAB_SP_DEPENDENCY TABLE (ID INT IDENTITY, NAME VARCHAR(250), SP_COUNT INT)
INSERT INTO @TAB_SP
select object_id,NAME from sys.objects WHERE type='P'
DECLARE @MIN INT =1, @MAX INT = (SELECT MAX(ID) FROM @TAB_SP), @SP_NAME VARCHAR(250)
WHILE (@MIN<=@MAX)
BEGIN
SELECT @SP_NAME=NAME FROM @TAB_SP WHERE ID= @MIN
INSERT INTO @TAB_SP_DEPENDENCY
SELECT @SP_NAME,COUNT(DISTINCT object_id) FROM SYS.OBJECTS
WHERE OBJECT_DEFINITION(object_id) LIKE '%'+@SP_NAME+'%'
SET @MIN=@MIN+1
END
SELECT * FROM @TAB_SP_DEPENDENCY