2010-08-31 58 views
0

如何查找某列是否用於存儲過程中的任何插入,更新或刪除語句。我使用了系統查詢,但不準確。我們可以在sql管理工作室手動檢查它,或者有任何查詢嗎?存儲過程中使用的列

回答

2

更簡單的方法是使用RedGate SQL搜索

但是,如果您願意,可以使用INFORMATION_SCHEMA.ROUTINES和ROUTINE_DEFINITION構建查詢。

編輯:

您可以使用此

SELECT ROUTINE_NAME, ROUTINE_DEFINITION 
FROM INFORMATION_SCHEMA.ROUTINES 
WHERE ROUTINE_DEFINITION LIKE '%YOUR COLUMN %' 
    AND ROUTINE_TYPE='PROCEDURE' 

,或者如果您有與數據庫同名多個列,您可以使用此。

select DISTINCT p.name 
from sys.procedures p 
    INNER JOIN sys.sql_dependencies d on p.object_id = d.object_id 
    INNER JOIN sys.tables t on t.object_id = d.referenced_major_id 
    INNER JOIN INFORMATION_SCHEMA.ROUTINES R ON R.ROUTINE_NAME = p.name 
WHERE R.ROUTINE_DEFINITION like '%YOUR COLUMN %' AND t.name = YOURTABLE 

但是,我認爲你應該使用搜索SQL

+0

我會盡力,但我可以有一些樣本查詢作爲它很緊迫? – superachu 2010-08-31 14:45:21

+0

謝謝。我會盡力讓你知道明天。 – superachu 2010-08-31 17:23:08

+0

第二個查詢在SQL Server 2000中不起作用? – superachu 2010-09-01 07:07:10