【发布时间】:2017-07-12 21:34:43
【问题描述】:
谁能告诉我如何找到存储过程的代码? 我什至不知道数据库名称,所以我怎么能找到它。 请帮我解决这个问题
【问题讨论】:
标签: sql-server stored-procedures
谁能告诉我如何找到存储过程的代码? 我什至不知道数据库名称,所以我怎么能找到它。 请帮我解决这个问题
【问题讨论】:
标签: sql-server stored-procedures
选择 * FROM dbo.sysobjects WHERE type = 'P'
【讨论】:
您可以使用以下代码在所有数据库中搜索 SP。
DECLARE @SPROCS AS TABLE (DBNAME VARCHAR(64), SCHEMANAME VARCHAR (128),
STOREDPROCNAME VARCHAR(128),
TYPE VARCHAR(10), TYPE_DESC VARCHAR(128),
CREATE_DATE DATETIME, MODIFY_DATE DATETIME, IS_MS_SHIPPED INT)
INSERT INTO @SPROCS
EXECUTE SP_MSFOREACHDB N'USE ?; SELECT ''?'',
S.NAME AS SCHEMANAME, O.NAME AS STOREDPROCNAME,
TYPE, TYPE_DESC, CREATE_DATE, MODIFY_DATE, IS_MS_SHIPPED
FROM SYS.ALL_OBJECTS AS O INNER JOIN SYS.SCHEMAS AS S
ON S.SCHEMA_ID = O.SCHEMA_ID
WHERE O.TYPE IN (''P'',''V'',''PC'',''FN'',''TF'',''U'')
AND IS_MS_SHIPPED = 0'
SELECT * FROM @SPROCS
WHERE DBNAME NOT IN ('MASTER', 'TEMPDB', 'MODEL', 'MSDB', 'DBA') AND STOREDPROCNAME LIKE '%<SP Name>%'
ORDER BY DBNAME, SCHEMANAME, TYPE, STOREDPROCNAME
EXEC sp_msforeachdb
'if exists(select 1 from [?].sys.objects where name=''<SPname>'')
select ''?'' as FoundInDb from [?].sys.objects where name=''<SPname>'''
或者如果可能的话,您可以从RedGate SQLSearch 安装一个工具来轻松完成此操作
【讨论】: