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 is very slow for me to search for a particular procedure manually.
I know that there is a stored procedure which I need to look at to fix a bug, somewhere in the entire project, it is called XYZ_procedure
How do I search for this procedure over all of my databases in SQL Server Management Studio?
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
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).


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??
If I am getting it right. You need a way to filter the procedures by name in SSMS. You can refer the following link :
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();
'
来源:https://stackoverflow.com/questions/46903416/sql-server-management-studio-find-stored-procedure-by-name-over-multiple-datab