Share via


升級複寫資料庫的考量

SQL Server 2008 支援從舊版 SQL Server 升級複寫資料庫。升級節點時,不需要停止其他節點上的活動。請確定您遵守有關拓撲中支援之版本的規則:

  • SQL Server 2000 Service Pack 3 (SP3) 是與 SQL Server 2008 一起參與複寫拓撲所需的最低版本。如果您使用 SQL Server 2005,就沒有需要的最低版本。

  • 散發者可以是任何版本,只要其高於或等於發行者版本 (在許多情況下,散發者與發行者為同一執行個體)。

  • 發行者可以是任何版本,只要它小於或等於散發者版本即可。

  • 訂閱者版本視發行集的類型而定:

    • 交易式發行集的訂閱者可以是兩個發行者版本內的任何版本。例如:執行中的 SQL Server 2000 發行者可以有 SQL Server 2008 訂閱者,而 SQL Server 2008 發行者可以有 SQL Server 2000 訂閱者。

    • 合併式發行集的訂閱者可以是小於或等於發行者版本的任何版本。

[!附註]

有關這個主題,請參閱「安裝說明」文件集和《SQL Server 線上叢書》。在「安裝說明」文件集中,以粗體文字表示的主題連結只會參考線上叢書中的主題。

在升級之前執行交易式複寫的記錄讀取器代理程式

在升級至 SQL Server 2008 之前,您必須確定所有來自已發行資料表的認可交易都已經由記錄讀取器代理程式進行過處理。若要確定已經處理過所有交易,請針對每個包含交易式發行集的資料庫執行下列步驟:

  1. 確定已在針對資料庫執行記錄讀取器代理程式。依預設,代理程式會持續執行。

  2. 停止在已發行資料表上的使用者活動。

  3. 提供時間讓記錄讀取器代理程式將交易複製到散發資料庫,然後再停止代理程式。

  4. 執行 sp_replcmds 以確認已處理所有的交易。這個程序中所產生的結果集應該是空的。

  5. 執行 sp_replflush 以關閉 sp_replcmds 的連接。

  6. 將伺服器升級至 SQL Server 2008。

  7. 如果 SQL Server Agent 和記錄讀取器代理程式在升級之後沒有自動啟動,則將其重新啟動。

升級之後為合併式複寫執行代理程式

升級之後,請為每一個合併式發行集執行快照集代理程式,並為每一個訂閱執行合併代理程式來更新複寫中繼資料。您不必套用新的快照集,因為不需要重新初始化訂閱。在升級之後,第一次執行合併代理程式時會更新訂閱中繼資料。這表示在發行者升級時,訂閱資料庫可以持續在線上運作並保持使用中狀態。 

合併式複寫會將發行集與訂閱中繼資料儲存在發行集與訂閱資料庫中的許多系統資料表內。執行快照集代理程式會更發行集中繼資料,執行合併代理程式會更新訂閱中繼資料。只有要產生發行集快照集時才需要它。如果合併式發行集使用參數化篩選,則每一個資料分割也有快照集。不需要更新這些資料分割快照集。(在 SQL Server 2000 中,「參數化篩選」是稱為「動態篩選」,「資料分割快照集」是稱為「動態快照集」)。

您可以從 SQL Server Management Studio、複寫監視器或命令列執行代理程式。如需有關執行快照集代理程式的詳細資訊,請參閱下列主題:

如需有關執行合併代理程式的詳細資訊,請參閱下列主題:

在使用合併式複寫的拓撲中升級 SQL Server 之後,如果您想要使用新功能,請變更任何發行集的發行集相容性層級。如需詳細資訊,請參閱<在複寫拓撲中使用多個 SQL Server 版本>。

升級至 Standard、Workgroup 或 Express Edition

從 SQL Server 2008 的一個版本升級到另一個版本之前,請確認您目前使用的功能在您想要升級後的版本中受到支援。如需詳細資訊,請參閱<SQL Server 2008 版本支援的功能>主題中的「SQL Server 2008 複寫功能」一節。

新增複寫代理程式安全性模型

在 SQL Server 2005 之前的 SQL Server 版本中,代理程式預設是依據 SQL Server Agent 服務帳戶的內容執行。SQL Server 2005 對於複寫代理程式執行並建立資料庫與其他資源之 Windows 整合式連接所依據的每個帳戶具有精細控制權。它可以針對每個代理程式指定不同的帳戶。如需詳細資訊,請參閱<安全性與保護 (複寫)>和<複寫代理程式安全性模型>。

新的安全性模型具有下列含意,能夠在拓撲中升級和執行 SQL Server 2000:

  • 從 SQL Server 2000 建立的複寫指令碼應該針對 SQL Server 2008 而升級,才能利用安全性增強功能的好處。如需詳細資訊,請參閱<如何:升級複寫指令碼 (複寫 Transact-SQL 程式設計)>。

  • 從 SQL Server 2000 升級到 SQL Server 2008 的散發者或訂閱者仍繼續在 SQL Server Agent 帳戶下執行,而且擁有的權限可能比它需要的更多。升級之後,我們建議您為代理程式指定具有適當基本權限的個別帳戶。若要指定個別帳戶:

    1. 撰寫發行集和訂閱的指令碼。

    2. 變更指令碼。如需詳細資訊,請參閱<如何:升級複寫指令碼 (複寫 Transact-SQL 程式設計)>。

    3. 卸除發行集和訂閱。如需詳細資訊,請參閱<發行資料和資料庫物件>和<訂閱發行集>。

    4. 使用修改的指令碼重新建立它們。

    如需有關代理程式所需權限的資訊,請參閱<複寫代理程式安全性模型>;如需有關管理登入和密碼的資訊,請參閱<管理複寫的登入與密碼>。升級之後所建立的新複寫組態,對於每個複寫代理程式都需要特定的帳戶組態。

    [!附註]

    設定為對本機資料庫連接使用 SQL Server 驗證的任何代理程式,變更為使用 Windows 驗證。本機連接是指代理程式對於在相同電腦上以代理程式執行的 SQL Server 執行個體所建立的連接。例如,提取訂閱的合併代理程式在訂閱者端執行,因此它對訂閱者所建立的連接就是本機連接。

  • 複寫拓撲中執行舊版 SQL Server 的參與者對先前的複寫安全性模式保持不變。例如:

    • 執行 SQL Server 2000 之訂閱者的提取訂閱不使用新的安全性模型,因為合併代理程式或散發是建立在訂閱者端。

    • 從執行 SQL Server 2008 之散發者到執行 SQL Server 2000 之訂閱者的發送訂閱會使用新的安全性模型,因為合併代理程式或散發是建立在散發者端。

    • 執行 SQL Server 2000 的發行者 (具有執行 SQL Server 2008 的散發者) 不使用新的安全性模型 (對於快照集代理程式、記錄讀取器代理程式或佇列讀取器代理程式),因為代理程式是在發行集資料庫的內容中建立的。

  • SQL Server 2005 和 SQL Server 2008 會使用相同的安全性模型。

合併式複寫的 Web 同步處理

合併式複寫的 Web 同步處理選項要求,必須將 SQL Server Replication Listener (replisapi.dll) 複製到用於同步處理之 Internet Information Services (IIS) 伺服器上的虛擬目錄。當您設定 Web 同步處理時,「設定 Web 同步處理精靈」會將檔案複製到虛擬目錄。如果您升級安裝在 IIS 伺服器上的 SQL Server 元件,就必須將 replisapi.dll 從 COM 目錄手動複製到 IIS 伺服器上的虛擬目錄。如需有關設定 Web 同步處理的詳細資訊,請參閱<設定 Web 同步處理>。

從舊版還原複寫的資料庫

若要確定從舊版還原複寫資料庫的備份時有保留複寫設定:還原到與建立備份的伺服器和資料庫同名的伺服器和資料庫。