Sql server 如何查找由t-sql存储过程创建的表?
如何找出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
我们可以在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很多东西