SELECT DISTINCT OBJECT_NAME(id) AS ProcedureName
FROM syscomments
WHERE [text] LIKE '%target_table_name%'
AND OBJECTPROPERTY(id, 'IsProcedure') = 1;
syscomments:儲存所有存儲過程、觸發器、視圖、預設值、規則的原始文本OBJECTPROPERTY(id, 'IsProcedure') = 1:過濾僅保留存儲過程,排除觸發器/視圖GROUP BY OBJECT_NAME(id) 或 DISTINCT:去重,同一過程可能多次引用該表SELECT OBJECT_NAME(id), [text]
FROM syscomments
WHERE [text] LIKE '%target_table%'
AND [text] LIKE '%target_column%'
AND OBJECTPROPERTY(id, 'IsProcedure') = 1;
-- 使用 sys.sql_modules 替代 syscomments (支援 >4000 字符定義)
SELECT OBJECT_NAME(object_id) AS ProcedureName
FROM sys.sql_modules
WHERE definition LIKE '%target_table_name%'
AND OBJECTPROPERTY(object_id, 'IsProcedure') = 1;
sys.sql_modules.definition 為 nvarchar(max),無 4000 字符截斷問題。