如何查找t-sql存储过程创建的表?

时间:2014-06-06 14:35:04

标签: sql-server sql-server-2012

如何在运行时找出T-SQL存储过程创建的表?

我们有数百个存储过程,我正在寻找有关如何解决这个问题的提示。

我们可以在SQL Server 2012本身或C#(Framework 3.5)中完成大部分工作。

1 个答案:

答案 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 + '%'