2010-08-26 75 views
52

有沒有什麼辦法可以在SQL Server Management Studio存儲過程中按名稱或部分名稱找到? (主動數據庫上下文)按名稱查找存儲過程

感謝您的幫助

回答

92

您可以使用:

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%' 
+0

如果你想獲得名稱的sp的文本,使用「sp_helptext SPNAME」更容易 – Ali 2017-11-08 17:42:59

35

假設您在對象資源管理器詳細信息(F7)顯示存儲過程的列表後,請點擊過濾器按鈕,並輸入名稱(或部分名稱)。

alt text

+1

非常感謝你我不知道過濾器的事情,但我從來沒有看過那個按鈕。 – 2016-05-12 14:57:37

3

這將爲表和視圖(除其他事項外),以及工作,不只是存儲過程:

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 

它也給你,這將是在任何非有用的模式名稱微不足道的數據庫(例如,您需要通過名稱查詢存儲過程的查詢)。

+1

將舊版應用程序從sql 2005遷移到2016我的腳本在'@errorMessage'附近得到'不正確的語法,這不是非常有幫助。當我在SSSM中運行相同的SQL時,它添加了「in procedure'some_name'」,但是在任何地方都沒有這樣的存儲過程!原來,這是一個觸發器,你的查詢發現它。謝謝! – mickeyf 2017-03-30 19:37:55

0

非常巧妙的技巧我偶然發現嘗試一些SQL注入,在搜索框中的對象瀏覽器只使用你的百分比字符,這將搜索一切存儲過程,函數,視圖,表格,索引...我累了更:)

Search Pattern

1

思維您可以使用此查詢:

​​

正如你所看到的,你可以做存儲過程也是身體內部搜索。

+0

@ardi,你再次來到這裏! :<> – Ali 2017-11-08 17:45:20