2011-09-08 14 views
0

如何跟蹤對開發數據庫的更改並將這些更改應用於生產數據庫(SQL Server 2008)?將數據庫定義更改從開發副本發佈到數據庫的生產副本有什麼好方法?

我在開發服務器上保存了一個數據庫的本地副本,並且當我添加新功能時,我可能會添加新表或更改數據庫中的字段和表名。追蹤這些變化並將其應用於主數據庫的好方法是什麼?

有兩種方法可以在兩個數據庫之間執行「差異」操作併合並定義更改嗎?

我認爲合併複製,但我不知道如何處理模式更改。例如,在這裏:http://technet.microsoft.com/en-us/library/ms151870.aspx它提到我基本上不能使用SSMS來進行定義更改,因爲它會刪除並重新創建表,這是發佈對象不允許的。

一個聰明的軟件可以比較列計數,類型,位置,並應用其他模糊匹配/邏輯推理方法來發現表格被重新命名,或添加了新表格或列名更改,之後它可以向用戶展示差異以確認和自動應用。

有沒有像我上面描述的東西存在,或者我堅持記住在SSMS中保存DDL語句並在生產數據庫中手動運行它們?

回答

1

也許您需要像(例如)FluentMigrator這樣的遷移工具,它可以幫助您跟蹤源代碼中的數據庫更改。

Here is a tutorial來自Fluent Migrator的原作者,解釋了Fluent Migrator是什麼,爲什麼你可能需要它以及它是如何工作的。

另一種方法是,你已經提到的:

一個聰明的軟件可以比較的列數,類型, 位置,並應用等模糊匹配/邏輯推理的方法來 搞清楚一個表被重新命名或添加了一個新表格或更改了列名稱,之後它可以向用戶顯示與 的區別以進行確認和自動應用。

我從來沒有嘗試過,但我在Stack Overflow看到很多關於Redgate SQL Compare(顯然確實如你所要求的)的建議。

+0

SQL比較可以在某些場景中節省時間,但無法比較具有不同名稱的對象,甚至不能將一個名稱映射到另一個名稱以進行比較,如下所述:http://www.red-gate.com/messageboard/ viewtopic.php?p = 31775#31775。它還提到了「SQL數據比較」http://www.red-gate.com/products/sql-development/sql-data-compare/ - 同一家公司的不同產品 - 可以執行數據比較以查找一個匹配表,但我不確定這個方法有多麼有用或有效。 FluentMigrator更多的是使用定義語句的部署工具,這不是我所需要的。 – Triynko

+0

我認爲使用一些簡單的邏輯進行自定義實現可以比SQL Compare做得更好,就簡單地「識別」差異而言,並且可以在一兩週內開發出來。 SQL Compare擅長的複雜部分將用於生成SQL語句,確定依賴性以確定正確的語句發佈順序,並實際應用更改。 – Triynko

相關問題