SQL Server Management Studio - find stored procedure by name over multiple databases

前端 未结 4 474
情歌与酒
情歌与酒 2021-01-26 04:14

I have recently joined a software project that has approximately 20-40 databases.

Each database has at least 200 stored procedures, some of them have many more, so it i

相关标签:
4条回答
  • 2021-01-26 04:56

    If you need to find database objects (e.g. tables, columns, triggers) by name - have a look at the FREE Red-Gate tool called SQL Search which does this - it searches your entire database for any kind of string(s).

    enter image description here

    enter image description here

    It's a great must-have tool for any DBA or database developer - did I already mention it's absolutely FREE to use for any kind of use??

    0 讨论(0)
  • 2021-01-26 05:02

    I think the simplest way is to use the undocumented stored procedure sp_MSForeachdb which executes a command for each database:

    EXEC sp_MSforeachdb 
    '
    USE ?
    IF EXISTS (
        SELECT 1 
        FROM sys.objects
        WHERE name = ''XYZ_procedure''
        )
        SELECT DB_NAME();
    '
    
    0 讨论(0)
  • 2021-01-26 05:06

    If I am getting it right. You need a way to filter the procedures by name in SSMS. You can refer the following link :

    Find Using Filter Settings In Object Explorer

    0 讨论(0)
  • 2021-01-26 05:11

    You can use dynamic SQL to check procedure over all of databases in SQL Server Management Studio

    USE MASTER
    GO
    BEGIN TRAN
    
    DECLARE @strt INT,@End INT,@Database NVARCHAR(50)
    
    SELECT * INTO #T FROM Sys.databases WITH(NOLOCK) WHERE database_id>4 
    ORDER BY 1
    
    SELECT ROW_NUMBER ()OVER (ORDER BY database_Id)Db_Id,* INTO #TT FROM #T
    SET @strt=1
    SELECT @End=Max(Db_ID)FROM #tt
    
    WHILE @strt<=@END
         BEGIN
             DECLARE @string NVARCHAR(MAX)
             SELECT @Database=NAME FROM #TT WHERE Db_ID=@strt
    
            Set @string='  Select '''+@Database+'''db_Name,* from '+@Database+'.sys.objects 
              WHERE Name=''XYZ_procedure'''
    
              SET @strt=@strt+1
              PRINT @string
              EXEC(@string)
         END
    
    ROLLBACK TRAN
    
    0 讨论(0)
提交回复
热议问题