Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何查找由t-sql存储过程创建的表?_Sql Server_Sql Server 2012 - Fatal编程技术网

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

Sql server 如何查找由t-sql存储过程创建的表?,sql-server,sql-server-2012,Sql Server,Sql Server 2012,如何找出T-SQL存储过程运行时创建的表 我们有数百个存储过程,我正在寻找有关如何进行此操作的提示 我们可以在SQL Server 2012本身或在C Framework 3.5中完成大部分工作。这篇StackOverflow文章应该对您有所帮助,标题为 当它对内容执行类似操作时,它运行各种命令来提取存储的进程及其关联的文本 供参考,这是: DECLARE @TextToSearchFor varchar(50) = 'CREATE TABLE' SELECT ROUTINE_NAME, RO

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

我们有数百个存储过程,我正在寻找有关如何进行此操作的提示


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

这篇StackOverflow文章应该对您有所帮助,标题为

当它对内容执行类似操作时,它运行各种命令来提取存储的进程及其关联的文本

供参考,这是:

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

SQL事件探查器可能是找出真正发生了什么的最相关的方法。您已经试过了吗?@xacinay很遗憾,这是我们在服务器上不能做的少数几件事之一,因为我们没有完全的管理权限。也许您可以使用它并查找在特定日期范围内创建的表@不幸的是,我们每天早上都要重建几百张桌子,有多台机器,同时运行多个作业,所以这不起作用。@ChristoperMahan:你能举个例子说明你在找什么吗?如果您能够提取正则表达式,那么在单独的编辑器中使用正则表达式可能会有所帮助。我们可能还要再去一次。不过,我们拥有的大部分内容都是选择进入。DECLARE@texttosearchforvarchar50='select into':遗憾的是,通常是选择进入\n很多东西