2011-05-13 197 views

回答

4

看一看所謂SQL Search免費紅門工具,它做到這一點 - 它搜索整個數據庫的任何類型的字符串(S)的

enter image description here

enter image description here

這對任何DBA或數據庫開發人員有很大必備的工具 - 爲什麼我已經提到它的絕對免費用於任何用途的?

所以在你的情況下,你可以鍵入你刪除的列名,並選擇只搜索你的存儲過程 - 在一秒鐘左右,你將有一個包含特定列的所有存儲過程的列表名稱。絕對好東西!

+1

它是免費的嗎?我們有Red Gate許可證,所以從未檢查過...... :-) – gbn 2011-05-13 08:29:17

+0

@gbn:它絕對,完全,完全** - ** F-R-E-E **! :-) – 2011-05-13 14:54:18

3
select object_name(object_id), * 
from sys.sql_module 
where definition like '%ColName%' 
+1

大括號button =格式代碼! – gbn 2011-05-13 07:07:58

4

您可以使用sys.sql_modules

SELECT 
    OBJECT_NAME(object_id) 
FROM 
    sys.sql_modules 
WHERE 
    definitiion LIKE '%MyDeletedColumn%' 

或者OBJECT_DEFINITION

的INFORMATION_SCHEMA的意見是不可靠的,因爲這樣的定義拆分成幾個爲nvarchar(4000)列。上述兩種方法返回nvarchar(最大)

編輯:鑑於SQL搜索是免費的,由marc_s註釋,這將是一個更好的解決方案。

+0

一個更簡單的方法,如果該列被稱爲'my_highly_unique_column',可能是我使用的方法。 :)絕對值得+1。 – 2011-05-13 07:04:08

+0

@Will A:如果您的模式爲「.MyDeletedColumn」或「MyDeletedColumn」YMMV,您可以對衝您的投注當然。並且謝謝 – gbn 2011-05-13 07:07:19

0

一種可能的方法是用虛擬參數調用每個存儲過程,其中SET SHOWPLAN_XML ON處於活動狀態。這不會運行該過程,但會生成計劃的.xml表示 - 並且如果引用的列丟失,將會失敗。但是,如果您使用#temp表,則無論如何都會失敗。 :(

你最容易想這個過程自動化,而不是寫了3000過程調用

免責聲明:這不是防彈的方法對丟失列回升,但好運氣找到什麼!好

+0

查看免費SQL搜索 - **更好的**在SQL Server中查找東西的方法... – 2011-05-13 16:15:22