簡體   English   中英

按名稱查找存儲過程

[英]Find stored procedure by name

有什么方法可以按名稱或部分名稱在 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 ) 中,單擊過濾器按鈕並輸入名稱(或部分名稱)。

替代文字

這也適用於表和視圖(除其他外),而不僅僅是 sproc:

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 注入,在搜索框中的對象資源管理器中只需使用您的百分比字符,這將搜索所有存儲過程、函數、視圖、表、模式、索引......我厭倦了想更多:)

搜索模式

對於 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

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM