2014-02-24 65 views
0

有沒有辦法檢測SQL Server數據庫中使用哪些列和哪些表?SQL Server:列出查詢中使用的所有列

  • 只是針對SQL Server 2012會好起來的。
  • 我們可以假設遺留站點中沒有用於列使用的'*'。

詳情:
我正在更新遺留系統的表結構到一個新的數據庫(2005至2012)上工作

有很多臃腫表,與列那些從來沒有使用過的,甚至從未使用過的表。通過手動檢查代碼來識別所有這些將是一件痛苦的事情。

(我的假設是,我們可以在其上運行的應用程序的完整測試通過運行SQL Server事件探查器,但我不知道一個方便的方法來提取列)

感謝。

+3

這是非常***不太可能,你可以採取任何列或表,而無需更改您的代碼。通常只創建表和列以支持某段代碼,因此將它們取出可能會破壞該代碼。這種情況沒有銀彈。 – RBarryYoung

+0

@RBarryYoung順便說一下,您的網站似乎已關閉:'/ dnn'應用程序中的服務器錯誤。 –

+0

傳統系統綁定到綁定到相同數據結構中的多個第三方工具。有超過100個表格,超過2000個字段,似乎大約一半的表格完全是空的。 @RBarryYoung,雖然我同意應該如何構建,但在遺留問題上很少如此。 –

回答

2

您可以在Mgmt Studio中列出一個表的依賴關係,它將向您顯示哪些SP,UDF等依賴於所討論的表。你不能爲一個領域做到這一點。但是,這隻會顯示內部依賴關係。 Sql Profiler理論上會向你展示你的應用程序請求的所有字段,但它仍然不會告訴你很多,因爲應用程序可能不會對它檢索的值做任何事情。如果您要更改分貝,只有在您要更改應用程序時付出努力纔有意義,然後您應該真正從用戶那裏獲得有關哪些功能仍然有用以及哪些功能尚未破解的信息你太參與後端刷新。恕我直言。

+0

我可能會接受這個答案,因爲我也沒有辦法做到這一點。理論上*,一個完整的測試套件應該利用應用程序的每個部分以及數據庫的每個部分。不幸的是,大部分SQL代碼實際上都在應用程序中,而不僅僅是數據庫內部的sprocs和其他對象。我假設這是最好的答案,但我會留下這個機會給一個潛在的'是的,它可以做到,這裏是' –

相關問題