如何跟蹤對開發數據庫的更改並將這些更改應用於生產數據庫(SQL Server 2008)?將數據庫定義更改從開發副本發佈到數據庫的生產副本有什麼好方法?
我在開發服務器上保存了一個數據庫的本地副本,並且當我添加新功能時,我可能會添加新表或更改數據庫中的字段和表名。追蹤這些變化並將其應用於主數據庫的好方法是什麼?
有兩種方法可以在兩個數據庫之間執行「差異」操作併合並定義更改嗎?
我認爲合併複製,但我不知道如何處理模式更改。例如,在這裏:http://technet.microsoft.com/en-us/library/ms151870.aspx它提到我基本上不能使用SSMS來進行定義更改,因爲它會刪除並重新創建表,這是發佈對象不允許的。
一個聰明的軟件可以比較列計數,類型,位置,並應用其他模糊匹配/邏輯推理方法來發現表格被重新命名,或添加了新表格或列名更改,之後它可以向用戶展示差異以確認和自動應用。
有沒有像我上面描述的東西存在,或者我堅持記住在SSMS中保存DDL語句並在生產數據庫中手動運行它們?
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
我認爲使用一些簡單的邏輯進行自定義實現可以比SQL Compare做得更好,就簡單地「識別」差異而言,並且可以在一兩週內開發出來。 SQL Compare擅長的複雜部分將用於生成SQL語句,確定依賴性以確定正確的語句發佈順序,並實際應用更改。 – Triynko