我正在使用SQL Server 2008 R2。我有多个数据库已恢复,一个是主数据库,另一个是版本DB(TesDB, TestDB1,TestDB2 etc...
)
我想知道在哪个存储过程中使用了一个特定的表。我需要数据库列表。
目前我正在使用以下查询,但它一次仅适用于一个数据库。
use [TestDB]
GO
SELECT Name
FROM sys.Procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) = 'Testtable'
请建议。
答案 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'''