2010-03-03 30 views
6

我正在開發一個數據驅動的網站,很多編程邏輯駐留在數據庫存儲過程和數據庫函數中。我發現自己更改了存儲的proc /函數,以修復錯誤或添加新功能。數據(表格)大部分保持不變。如何分離MS SQL Server 2005中的編程邏輯和數據?

我遇到的問題是跟蹤存儲的proc/functions的版本。目前,我正在增加整個數據庫的版本,當我做一組更改。由於數據量巨大(10 GB),我遇到的問題是必須同時運行開發版和數據庫版本。

我希望將所有存儲的過程和函數放在一個數據庫中,並將數據保存在一個數據庫中,以便我可以更好地管理這些更改。

我相信其他人會遇到類似的建議和要求如何最好地處理這種情況的建議。

回答

1

您可以僅版本模式轉儲。結合源碼控制keword擴展(如Rawheiser所建議的),您只需查看數據庫中的版本,生成差異並應用即可。

此外,還有幾個優秀的工具來比較數據庫及其模式,生成DDL腳本等:SQL Workbench,Power Architect,DDLUtils和Redgate SQL Compare等等。 SQL Compare可能最適合SQL Server,儘管所有其他的都是FOSS,並提供更高的投資回報率(就花在學習上的時間以及您可以對它們做什麼而言),因爲它們是平臺和獨立的RDBMS。

最後,我必須說...我明白,您在數據庫中使用邏輯獲得的直接結果是誘人的,但如果您已經超出了數據庫中的幾個過程,那麼您正在設置你的自我經歷了相當多的痛苦,篩選了容易變成意大利麪代碼並將你的應用程序鎖定到單個數據庫供應商的過程。你可能有你的理由,但我一直在那裏,並不是很喜歡它。邏輯可以在不同的層面上生活得非常好。

0

對於源的控制,你有幾種選擇:

  1. 使用Visual Studio Database project

  2. 使用SQL Server 2005的內置支持source control

  3. 使用第三方工具,如SQL Compare

IMO選項1是優選的。

+0

您能否詳細說明爲什麼「選項1更可取」。 – 2010-03-07 23:58:47

2

我也建議使用源代碼控制關鍵字擴展存儲過程中($版本:$)

這樣,你可以眼球,grep的,搜索syscomments中,等看你有沒有部署的數據庫的版本。