我的小組有4個SQL Server數據庫:
- 生產
- UAT
- 測試
- 開發
我在開發環境中工作。當需要推廣我一直在研究的對象(表格,視圖,函數,存儲過程)時,我向我的經理提出了一個請求,他向促進測試。經過測試,她向向UAT推銷的管理員提交請求。在成功進行用戶測試後,同一管理員將推向生產。
的問題
整個過程是尷尬的幾個原因。
- 每個人都必須手動跟蹤他們的更改。如果我更新,添加,刪除任何需要跟蹤的對象,以便我的升級請求包含我所做的一切。從理論上講,如果我錯過了測試或UAT應該抓住它的地方,但這不是確定的,反正它浪費了測試者的時間。
- 我做的很多修改都是迭代的,並在GUI中完成,這意味着沒有記錄我所做的更改,只有最終結果(至少據我所知)。
- 我們正處於構建數據集市的初期階段,因此大部分更改(至少按計數方式)都是次要的:更改列的數據類型,將表的名稱更改爲我們結晶就是他們將被用於,調整功能和存儲的特效等
問題
人們一直在做這方面的幾十年的工作,所以我想有得成爲管理流程的更好方式。我會喜歡的是,如果我可以在兩個數據庫之間運行差異來查看結構如何不同,請使用該差異來生成更改腳本,並將該更改腳本用作我的促銷請求。這可能嗎?如果沒有,是否有其他方法來組織這個過程?
爲了記錄,我們是100%的微軟商店,剛剛將所有內容更新到SQL Server 2008,因此該軟件包中提供的任何工具都是公平的遊戲。
我應該說明我不一定在尋找diff工具。如果這是同步我們的環境的最佳方式,那麼很好,但如果有更好的方式,我正在尋找。
一個我想做得很好的例子是Ruby on Rails中的遷移。死簡單的語法,所有更改都會自動記錄下來,默認情況下,確定遷移需要運行的幾乎非常簡單。如果對於SQL Server有類似的東西,我很樂意。
我的理想解決方案是1)容易和2)很難搞砸。 Rails遷移都是;到目前爲止,我在SQL Server上所做的一切都不是。
使用腳本來更新數據庫和人工跟蹤更新腳本自己正是我試圖避免的那種情況。 – kubi 2010-05-18 21:56:25
你不'追蹤'更新。您將數據庫更新視爲代碼的改進和功能。您將腳本視爲源代碼樹的一部分,並將它們視爲源代碼,然後將它們作爲源代碼進行版本控制檢查,然後將其作爲源代碼進行檢查等。與避免編寫項目.cs文件相同。 – 2010-05-18 22:55:18