2008-09-09 39 views
2

我正在尋找一些「最佳實踐」來自動從源代碼管理中部署存儲過程/視圖/功能/表更改。我正在使用StarTeam & ANT,因此標籤照顧好了;我在尋找的是你們中的一些人如何實現從源代碼中自動拉取這些對象 - 不一定是StarTeam。自動從源代碼管理DB對象遷移

我想結束一個腳本,然後可以執行,簽入和標記。

我不會要求任何人寫這個 - 只是一些想法或方法,過去有(或沒有)的工作。

我試圖清理一個爛攤子,並想確保我儘可能接近「正確」。

我們在StarTeam的單個文件中存儲表格/視圖/函數等,我們的數據庫是SQL 2K5。

回答

4

我們使用redgate的SQL Compare(http://www.red-gate.com/)。

我們有一個生產數據庫,一個開發數據庫,​​每個開發人員都有自己的數據庫。

開發數據庫與開發人員在檢入其更改時對其數據庫所做的更改同步。

開發人員還檢入由SQL比較生成的同步腳本和比較報告。

當我們部署我們的應用程序時,我們只需使用SQL Compare將開發數據庫與生產數據庫同步即可。

這對我們很有用,因爲我們的應用程序僅供內部使用。如果這不是你的方案,那麼我會看SQL Packager(也來自redgate)。

1

我更喜歡從表中分離視圖,過程和觸發器(可以隨意重新創建的對象)。對於視圖,過程和觸發器,只需編寫一份作業,將其檢出並重新創建最新版本。

對於表,我更喜歡有一行數據庫版本表。使用該表來確定哪些新更新尚未應用。然後應用每個更新並更新版本號。如果更新失敗,則只有該更新才能檢查,並且您可以重新運行以確定早期更新不會再發生。

1

卡爾指出,你可以使用一個diff工具來創建你的更新腳本。 RedGate是一個很好的產品,但是SQL Server 2k5和TableDiff一起提供,它也應該可以完成這項工作。