表中使用的存储过程

时间:2016-09-02 14:21:56

标签: sql sql-server stored-procedures sql-server-2008-r2

我正在使用SQL Server 2008 R2。我有多个数据库已恢复,一个是主数据库,另一个是版本DB(TesDB, TestDB1,TestDB2 etc...

我想知道在哪个存储过程中使用了一个特定的表。我需要数据库列表。

目前我正在使用以下查询,但它一次仅适用于一个数据库。

use [TestDB]
GO

SELECT Name 
FROM sys.Procedures 
WHERE OBJECT_DEFINITION(OBJECT_ID) = 'Testtable'

请建议。

3 个答案:

答案 0 :(得分:0)

你的意思是什么?

declare @db varchar(50),
        @sql nvarchar(max),
        @tofind varchar(max)='table to find'

DECLARE db_cursor CURSOR FOR  
SELECT name 
FROM MASTER.dbo.sysdatabases 
WHERE name NOT IN ('master','model','msdb','tempdb')  

OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @db   


WHILE @@FETCH_STATUS = 0   
BEGIN   
    set @sql='SELECT Name,OBJECT_DEFINITION(OBJECT_ID)FROM '+@db+'.sys.Procedures WHERE OBJECT_DEFINITION(OBJECT_ID) like ''%'+@tofind+'%''  '
    print @sql

    exec sp_executesql @sql
FETCH NEXT FROM db_cursor INTO @db   
END   

CLOSE db_cursor   
DEALLOCATE db_cursor

答案 1 :(得分:0)

尝试使用Redgate的Sql Search工具。对于像这样的东西来说太棒了。

http://www.red-gate.com/products/sql-development/sql-search/

答案 2 :(得分:-1)

exec sp_MSforeachdb'使用?选择 ? as DBName,Name FROM sys.Procedures WHERE OBJECT_DEFINITION(OBJECT_ID)='' Testtable'''