Есть ли способ найти в SQL Server Management Studio хранимую процедуру по имени или по части имени? (в активном контексте базы данных)
Спасибо за помощь
sql
database
sql-server-2005
ssms
Gruber
источник
источник
inner join sys.procedures p on p.object_id = c.id
вместо этогоobject_definition(object_id(r.ROUTINE_NAME)),
как альтернативу.Предполагая, что вы находитесь в окне «Сведения об обозревателе объектов» ( F7), где отображается список хранимых процедур, нажмите кнопку «Фильтры» и введите имя (или часть имени).
источник
Это будет работать и для таблиц и представлений (среди прочего), а не только для sprocs:
SELECT '[' + s.name + '].[' + o.Name + ']', o.type_desc FROM sys.objects o JOIN sys.schemas s ON s.schema_id = o.schema_id WHERE o.name = 'CreateAllTheThings' -- if you are certain of the exact name OR o.name LIKE '%CreateAllThe%' -- if you are not so certain
Он также дает вам имя схемы, которое будет полезно в любой нетривиальной базе данных (например, в той, где вам нужен запрос для поиска хранимой процедуры по имени).
источник
Вы можете использовать этот запрос:
SELECT ROUTINE_CATALOG AS DatabaseName , ROUTINE_SCHEMA AS SchemaName, SPECIFIC_NAME AS SPName , ROUTINE_DEFINITION AS SPBody , CREATED AS CreatedDate, LAST_ALTERED AS LastModificationDate FROM INFORMATION_SCHEMA.ROUTINES WHERE (ROUTINE_DEFINITION LIKE '%%') AND (ROUTINE_TYPE='PROCEDURE') AND (SPECIFIC_NAME LIKE '%AssessmentToolDegreeDel')
Как видите, вы также можете выполнять поиск внутри тела хранимой процедуры.
источник
Очень изящный трюк, который я наткнулся на попытку некоторой SQL-инъекции, в обозревателе объектов в поле поиска просто используйте ваши процентные символы, и это будет искать ВСЕ хранимые процедуры, функции, представления, таблицы, схемы, индексы ... Я устал думать о большем :)
Шаблон поиска
источник
Когда у меня есть имя процедуры хранения и я не знаю, к какой базе данных оно принадлежит, я использую следующее:
Use [master] GO DECLARE @dbname VARCHAR(50) DECLARE @statement NVARCHAR(max) DECLARE db_cursor CURSOR LOCAL FAST_FORWARD FOR --Status 48 (mirrored db) SELECT name FROM MASTER.dbo.sysdatabases WHERE STATUS NOT LIKE 48 AND name NOT IN ('master','model','msdb','tempdb','distribution') OPEN db_cursor FETCH NEXT FROM db_cursor INTO @dbname WHILE @@FETCH_STATUS = 0 BEGIN SELECT @statement = 'SELECT * FROM ['+@dbname+'].INFORMATION_SCHEMA.ROUTINES WHERE [ROUTINE_NAME] LIKE ''%name_of_proc%'''+';' print @statement EXEC sp_executesql @statement FETCH NEXT FROM db_cursor INTO @dbname END CLOSE db_cursor DEALLOCATE db_cursor
источник
Для SQL Server версии 9.0 (2005 г.) вы можете использовать приведенный ниже код:
select * from syscomments c inner join sys.procedures p on p.object_id = c.id where p.name like '%usp_ConnectionsCount%';
источник
Вариант 1. В SSMS перейдите к
View > Object Explorer Details
или нажмите F7. ИспользуйтеSearch
коробку. Наконец, в отображаемом списке щелкните правой кнопкой мыши и выберите,Synchronize
чтобы найти объект вObject Explorer
дереве.Вариант 2: Установить надстройку вроде
dbForge Search
. Щелкните правой кнопкой мыши отображаемый список и выберитеFind in Object Explorer
.источник