【问题标题】:Table used in which stored procedure表在哪个存储过程中使用
【发布时间】:2017-01-10 16:55:57
【问题描述】:

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

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

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

use [TestDB]
GO

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

请提出建议。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      你的意思是类似的吗?

      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
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-08-03
          • 1970-01-01
          • 2021-09-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-25
          相关资源
          最近更新 更多