[SQL] 在SQL Server的檢視(View)、預存程序(Stored Procedure)、純量函數、資料表函數等,用sys.sysobjects與sys.syscomments搜尋關鍵字。
在SQL Server中搜尋關鍵字
想要搜尋特定關鍵字在SQL Server的檢視(View)、預存程序(Stored Procedure)、純量函數、資料表函數..等是否存在時。
使用sys.sysobjcets與sys.syscomments搜尋,SQL語法如下:
SELECT *
FROM sys.sysobjects
INNER JOIN syscomments ON sys.sysobjects.id = sys.syscomments.id --對應id
WHERE sys.syscomments.text LIKE '%關鍵字%' --想要查詢的關鍵字
sys.sysobjcets : 針對資料庫內所建立的每個物件,如條件約束、預設值、記錄、規則和預存程序,各包含一個資料列。
sys.syscomments : 包含資料庫中每份檢視、規則、預設值、觸發程序、CHECK 條件約束、DEFAULT 條件約束以及預存程序的項目。 text 資料行包含原始的 SQL 定義陳述式。
sys.syscomments.text : SQL 定義陳述式的實際文字。在欄位裡搜尋關鍵字。
若要指定檢視(View)、預存程序(Stored Procedure)、純量函數、資料表函數..等。加上條件 sys.sysobjects.type = '物件類型' 。
SELECT *
FROM sys.sysobjects
INNER JOIN syscomments ON sys.sysobjects.id = sys.syscomments.id --對應id
WHERE sys.syscomments.text LIKE '%關鍵字%' --想要查詢的關鍵字
AND sys.sysobjects.type = '物件類型' --指定的物件類型
sys.sysobjects的type類型:
-
AF = 彙總函式 (CLR)
-
C = CHECK 條件約束
-
D = 預設值或 DEFAULT 條件約束
-
F = FOREIGN KEY 條件約束
-
FN = 純量函數
-
FS = 組件 (CLR) 純量函數
-
FT = 組件 (CLR) 資料表值函式 IF = 內嵌資料表函數
-
IT - 內部資料表
-
K = PRIMARY KEY 或 UNIQUE 條件約束
-
L = 記錄
-
P = 預存程序
-
PC = 組件 (CLR) 預存程序
-
R = 規則
-
RF = 複寫篩選預存程序
-
S = 系統資料表
-
SN = 同義字
-
SQ = 服務佇列
-
TA = 組件 (CLR) DML 觸發程序
-
TF = 資料表函數
-
TR = SQL DML 觸發程序
-
TT = 資料表類型
-
U = 使用者資料表
-
V = 檢視
-
X = 擴充預存程序
例如,要搜尋在檢視中有'Name'這個文字,SQL如:
SELECT *
FROM sys.sysobjects
INNER JOIN syscomments ON sys.sysobjects.id = sys.syscomments.id --對應id
WHERE sys.syscomments.text LIKE '%Name%' --想要查詢的關鍵字,Name
AND sys.sysobjects.type = 'V' --指定的物件類型,檢視(View)