2013-01-24 72 views
1

我應該分析一箇舊的現有數據庫與200 +表和100 +存儲過程和一些意見。數據庫分析

我應該找出不被當前使用的表。訪問所有的關係,報告已過時的,找出丟失的,沒有使用的列等

今天我花了5小時,只能得到7-8表完成,我很困惑如何創建一個報告,我應該使用Visio還是Excel或其他?

請指教!

感謝, Arshya

回答

1

如果使用的是SQL Server中,我會建議紅門工具。 http://www.red-gate.com/

我相信從SQL Server到Oracle到MySQL的所有東西都有工具來監視事務以及誰連接到數據庫以及他們正在運行什麼查詢。我會從那裏開始。

您也可以運行查詢,看是否有場只有空值,暗示他們從來沒有使用過。

要找出正在使用的列是比較困難的。如果你有使用數據庫的應用程序的源代碼,我會去那裏嘗試編寫一個程序來解析所有的數據庫調用並生成一個報告。但這可能非常困難。

另一個想法(即使它是不是最好的)是使數據庫的副本,並切換你的系統上使用開發機器的恢復拷貝。然後通過修改數據庫的副本並記錄問題來證明您對未使用的列/表的預測。你是否刪除了一張表並且應用程序崩潰了?那麼這很重要! (我知道這是一個非常痛苦的事情,試圖做的,因爲你不能檢驗一切。)

不幸的是你最終會暴露,最有可能的許多應用程序依賴於接口的數據庫模式。可以這麼說,貓已經沒有了。我認爲在做了一些研究之後,回過頭來說,最好是保持原樣。

+0

感謝。我會檢查紅門工具。 。 – Arshya

1

這絕對是你可以手動越早無法完成任何時間的任務,你將需要使用額外的工具。

以下是你可能想要做一些額外的事情,推薦工具:

  • 檢查哪些數據庫對象不能被任何其他對象所引用,並在初步分析跳過它們。你可能會發現很多這些。工具 - ApexSQL Clean
  • 安裝一些審計工具並運行幾天,以查看哪些表/存儲過程最常用。工具 - ApexSQL Audit
  • 檢查您的應用程序並查看在那裏使用了哪些對象。如果某些存儲過程或表未被任何應用程序代碼引用,則可以將它們標記爲適合刪除。如果你的代碼只有.NET,那麼你可以用ApexSQL Clean做到這一點,但我會推薦良好的舊的grep函數。
  • 完成分析後,您可能需要考慮對某些表或其他對象進行重新分解以適應新的要求。工具 - ApexSQL Refactor

一般情況下,你不能出錯,從紅門或井寺工具,但我不喜歡ApexSQL多一點