有时我们知道一个SP的名字,想知道数据库中有哪些数据库对象对此SP有引用,如何做呢?
下面这段SP可能帮到你!
SET NOCOUNT ON
IF OBJECT_ID('tempdb..#') IS NOT NULL
DROP TABLE #
CREATE TABLE #(
DbName sysname,
Owner sysname,
Object sysname,
xtype sysname,
CreateDate datetime)
DECLARE @Search sysname, @sql nvarchar(4000)
SELECT @Search = N'Table_SoMaster', -- 要查询的对象名
@sql = N'
USE [?]
RAISERROR(N''Search on: ?'', 10, 1) WITH NOWAIT
INSERT #
SELECT N''?'', USER_NAME(O.uid), O.name, O.xtype, O.crdate
FROM sysobjects O, syscomments C
WHERE O.id = C.id
AND O.status >= 0
AND O.xtype IN (''P'',''V'',''FN'',''TF'',''IF'')
AND C.text LIKE N''%' + @Search + N'%'''
EXEC sp_msforeachdb @sql
SELECT DbName, Owner, Object,
xtype = CASE xtype
WHEN 'P' THEN 'Procedure'
WHEN 'V' THEN 'View'
ELSE 'User Function' END,
CreateDate
FROM #
SET NOCOUNT OFF