2012-08-29 33 views
1

我在我的數據庫中有大量的存儲過程,並且我希望看到其中的一個能否在我編寫新的程序之前完成我的任務。我將如何搜索現有存儲過程的名稱(而不是內容)?如何搜索我的存儲過程的名稱?

回答

4

的SQL Server 2005+:

SELECT name FROM sys.procedures WHERE name LIKE '%search_text%'; 

的SQL Server 2000:

SELECT name FROM sysobjects WHERE name LIKE '%search_text%' AND xtype = 'P'; 

另一個好主意是建立一個合理的命名方案。如果您的命名約定是一致且合乎邏輯的,那麼您根本不必搜索。

+0

+1爲合理的命名模式。不幸的是,這並不總是[立即]選項。 :) –

0
SELECT DISTINCT OBJECT_NAME(id) 
FROM syscomments 
WHERE OBJECT_NAME(id) 
LIKE '%search_text%' 
+2

syscomments是一個向後兼容的視圖。在SQL Server 2005+上執行此操作有更有效的方法。 –

+2

從SQL Server ** 2005 **和更新的版本開始,儘量避免使用*舊式*'sysXXXX'目錄視圖。相反,使用'sys'模式中的視圖 - 例如存儲過程的'sys.procedures'。 –

+3

另外你爲什麼要發佈多個答案給你自己的問題? –

0
SELECT name 
FROM sys.objects 
WHERE type = 'P' 
     AND name LIKE '%search_text%' 
+3

'sys.procedures'會更專注 - 不需要指定'type ='P'' - 它只列出過程.... –

-1

上述方法都很好,但更簡單的方法是從Red Gate下載SQL Search的副本。它是一個免費的實用程序,可插入SSMS,並允許您搜索整個服務器上的所有對象。

+1

雖然它是一個有用的工具,但對於查找存儲過程名稱似乎過分了。 –

+1

(PS我不是那個倒票的人,我認爲這是一個非常有用的工具,只是沒有必要去解決這個特定的問題,一個人應該熟悉目錄視圖,這很容易解決。) –

+0

同意......我只是發現該實用程序對於日常管理而言是一個很好的幫助,並傾向於在安裝完成後使用它 – PseudoToad