SQL Server Management Studioのストアドプロシージャで名前または名前の一部で検索できる方法はありますか? (アクティブなデータベースコンテキスト上)
手伝ってくれてありがとう
次を使用できます。
select *
from
sys.procedures
where
name like '%name_of_proc%'
コードが必要な場合は、syscommentsテーブルを見ることができます
select text
from
syscomments c
inner join sys.procedures p on p.object_id = c.object_id
where
p.name like '%name_of_proc%'
更新の編集:
aNSI標準バージョンも使用できます
SELECT *
FROM
INFORMATION_SCHEMA.ROUTINES
WHERE
ROUTINE_NAME LIKE '%name_of_proc%'
オブジェクトエクスプローラーの詳細(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')
ご覧のとおり、ストアドプロシージャの本体内で検索を行うこともできます。
ストアプロシージャ名があり、それがどのデータベースに属しているかわからない場合、次を使用します-
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インジェクションを試すときにつまらない非常に巧妙なトリックです。これにより、すべてのストアドプロシージャ、関数、ビュー、テーブル、スキーマ、インデックスが検索されます... :)