如何在运行时找出T-SQL存储过程创建的表?
我们有数百个存储过程,我正在寻找有关如何解决这个问题的提示。
我们可以在SQL Server 2012本身或C#(Framework 3.5)中完成大部分工作。
答案 0 :(得分:0)
此StackOverflow帖子可以为您提供帮助,标题为'How do I find a stored procedure containing text'。
当它只是对内容进行LIKE时,它会运行各种命令来提取存储过程及其相关文本。
供参考,这是:
DECLARE @TextToSearchFor varchar(50) = 'CREATE TABLE'
SELECT ROUTINE_NAME, ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%' + @TextToSearchFor + '%'
AND ROUTINE_TYPE='PROCEDURE'
SELECT OBJECT_NAME(id)
FROM SYSCOMMENTS
WHERE [text] LIKE '%' + @TextToSearchFor + '%'
AND OBJECTPROPERTY(id, 'IsProcedure') = 1
GROUP BY OBJECT_NAME(id)
SELECT OBJECT_NAME(object_id)
FROM sys.sql_modules
WHERE OBJECTPROPERTY(object_id, 'IsProcedure') = 1
AND definition LIKE '%' + @TextToSearchFor + '%'