SQL Server中找某個Keyword在那個物件中出現!

SQL Server中找某個Keyword在那個物件中出現!

前言

有時想找某個keyword用在那些SP或是Function之中,有那個方式可以整批找出來呢?

實作

可使用sys.syscomments這個Table,使用方式如下。


--找某個Key在那裡有用到
DECLARE @SEARCH NVARCHAR(256)
SET @SEARCH = 'PagingCursor'

SELECT object_name(id),text 
FROM syscomments 
WHERE text like '%' + @SEARCH + '%'

 

image

參考

http://technet.microsoft.com/zh-tw/library/ms186293.aspx

資料行名稱
資料類型
描述

id

int

這個文字所套用的物件識別碼。

number

smallint

程序分組中的數字 (如果有分組的話)。

0 = 項目不是程序。

colid

smallint

超過 4,000 個字元的物件定義資料列序號。

status

smallint

僅供參考之用。不支援。我們無法保證未來的相容性。

ctext

varbinary(8000)

SQL 定義陳述式的原始位元組。

texttype

smallint

0 = 使用者提供的註解

1 = 系統提供的註解

4 = 加密的註解

language

smallint

僅供參考之用。不支援。我們無法保證未來的相容性。

encrypted

bit

指出程序定義是否會模糊化。

0 = 不模糊化

1 = 模糊化

ms186293.note(zh-tw,SQL.100).gif重要事項:

若要模糊化預存程序定義,請將 CREATE PROCEDURE 搭配 ENCRYPTION 關鍵字使用。

compressed

bit

一律傳回 0。這表示程序已經壓縮。

text

nvarchar(4000)

SQL 定義陳述式的實際文字。

SQL Server 2008 在目錄中繼資料內解碼及儲存 SQL 運算式的方式異於 SQL Server 2000。已解碼運算式的語意相當於原始文字,但是不能保證語法相同。例如,空白字元會從已解碼的運算式移除。

這個 SQL Server 2000 相容檢視會從目前的 SQL Server 結構取得資訊,並可傳回比 nvarchar(4000) 定義還要多的字元數。sp_help 會傳回nvarchar(8000) 做為文字資料行的資料類型。使用 syscomments 時,請考慮使用 nvarchar(max)。對於新的開發工作,請勿使用 syscomments

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^