3
我已經繼承了嵌套存儲過程中的一些非常大的存儲過程。我想創建一個存儲過程,我可以運行它來顯示特定存儲過程的所有依賴關係 - 列出其中的所有表和嵌套存儲過程。獲取嵌套的存儲過程依賴
我使用下面的代碼,但這只是給我的最高級別的依賴,而不是從嵌套存儲過程的任何
CREATE TABLE #TEMP_ROADMAP
(
TBL_OBJECT_NAME VARCHAR(50),
TBL_TYPE VARCHAR(20),
TBL_PARENT VARCHAR(20),
PROCNAME VARCHAR(50)
)
DECLARE @PARENTPROC VARCHAR(100)
SET @PARENTPROC = '[DBO].[RULE_PROC_1]'
INSERT INTO #TEMP_ROADMAP (TBL_OBJECT_NAME,TBL_TYPE)
SELECT DISTINCT
[OBJECT_NAME] = SCHEMA_NAME(O.[SCHEMA_ID]) + '.' + O.NAME, O.TYPE_DESC
FROM
SYS.DM_SQL_REFERENCED_ENTITIES (@PARENTPROC, 'OBJECT') D
JOIN
SYS.OBJECTS O ON D.REFERENCED_ID = O.[OBJECT_ID]
WHERE
O.[TYPE] IN ('U', 'V', 'P', 'IF', 'FN')
UPDATE #TEMP_ROADMAP
SET TBL_PARENT = 'PARENT',
PROCNAME = @PARENTPROC
WHERE TBL_OBJECT_NAME IS NOT NULL
SELECT * FROM #TEMP_ROADMAP
DROP TABLE #TEMP_ROADMAP
輸出:
TBL_OBJECT_NAME TBL_TYPE TBL_PARENT PROCNAME
dbo.RULE_PROC_2 SQL_STORED_PROCEDURE PARENT [DBO].[RULE_PROC_1]
dbo.TEST_TABLE_1 USER_TABLE PARENT [DBO].[RULE_PROC_1]
它可以做,我可以得到此父級過程中其他嵌套存儲過程的表和名稱?
這裏是一個非常不錯的文章,這將給你如何做到這一點,你可以操縱寫在查詢了很好的見解該文章取決於您的要求。 https://sqlsunday.com/2013/11/03/working-with-dependencies/ – CuriousKid
哪個版本的SQL Server。對於較早的版本,sp_depends系統存儲過程與sysdepends表一樣不可靠,但是在後來的版本中(我認爲2008R2版本)都更可靠。 –