2011-04-29 109 views
1

我一直在尋找此項目的並行升級解決方案。最廣泛使用的解決方案是使用norecovery完成SQL Server 2000數據庫的全部備份並在SQL Server 2008上進行恢復。然後使用norecovery恢復隨後的事務日誌備份。當我們準備切換時,將SQL Server 2000更改爲只讀模式,備份尾日誌並在SQL Server 2008上使用恢復進行恢復。然後使SQL Server 2008聯機。使用複製將SQL Server 2000升級到2008 R2

但是,無法使用事務性複製進行升級,其中SQL Server 2000是發佈服務器,而SQL Server 2008是訂戶。腳本所有對象,如登錄,索引等,並適用於SQL Server 2008.當我們準備切換時,我們將停止複製,刪除所有複製作業,並切換所有應用程序以連接到SQL Server 2008.我還沒有找到任何人建議這種方法。它有什麼問題嗎?

回答

1

您描述的數據遷移方法可以使用SQL Server複製執行。

只要您決定的選擇滿足您的項目/應用程序平臺的特定要求,此方法或任何其他數據遷移方法就沒有任何問題。

也就是說,您描述的方法當然更多地涉及到實際遷移步驟的配置和實施。如果您可以接受停機時間,那麼簡單的備份和恢復過程肯定會更直接。日誌傳送也是另一種更簡單的遷移方法。

到目前爲止,您知道複製方法在理論上可行。現在是時候在測試中構建一個工作解決方案,以驗證您的數據遷移策略並實施實施流程。

1

如果不另外複製,則創建複製訂閱將會更改您的架構和一些設置。例如,您可能會爲所有行生成GUIDs,以便於複製。

+0

謝謝。我不擔心模式開始更改,因爲我們在此SQL Server 2000與其他SQL Server 2005之間進行了複製。 – David 2011-04-29 21:11:06

0

是的,只要您轉移其他對象,它就可以工作。

1

注意 - 事務複製將關閉訂閱服務器上的所有IDENTITY列(事務複製SP實際上取決於此事實,因爲它們插入IDENTITY列時未先指定IDENTITY_INSERT ON)。我只能確認這是用戶使用SQL 2000時的情況 - 也許2008年的用戶表現會有所不同。

因此,使用SQL 2K進行事務複製並不能真正爲您提供熱備份。我們必須做一些SQL調整(重新設置IDENTITY列&用IDENTITY_INSERT包裝器重寫複製SP),以使自己處於一種情況,即用戶實際上是作爲熱備用工作的,準備好讓應用程序指向它。但它肯定不會開箱=)

相關問題