共用方式為


SQL Server 2005 Replication 中的突破性變更

更新: 2006 年 4 月 14 日

這個主題描述需要對應用程式做一些改變的複寫功能變更。

ms143470.note(zh-tw,SQL.90).gif附註:
有關這個主題,請參閱「安裝說明」文件集和《SQL Server 2005 線上叢書》。在「安裝說明」文件集中,以粗體文字表示的主題連結只會參考線上叢書中的主題。

影響所有複寫類型的突破性變更

下列突破性變更將套用至 Microsoft SQL Server 2005 中的所有複寫類型。

功能 描述

複寫指令碼的必要變更

相對於 Microsoft SQL Server 2000,複寫代理程式安全性模型已有了改變。如需有關安全性模型的詳細資訊,請參閱<複寫代理程式安全性模型>。如果您是 SQL Server 2005 中的系統管理員 (sysadmin) 固定伺服器角色的成員之一,而且執行從 SQL Server 2000 或 SQL Server 7.0 建立的複寫指令碼,則指令碼可正確執行。如果您是 dbo 固定資料庫角色或另一個角色的成員之一,則指令碼會失敗,必須升級才行。如需有關升級指令碼的資訊,請參閱<How to: Upgrade Replication Scripts (Replication Transact-SQL Programming)>。雖然為系統管理員 (sysadmin) 角色成員所執行的指令碼進行升級並非必要,但建議您這麼做,以利用安全性增強功能。

複寫代理程式的本機連接

在升級到 SQL Server 2005 時,任何使用 SQL Server 驗證的本機連接都會修改成使用 Windows 驗證。本機連接是指代理程式對於在相同電腦上以代理程式執行的 SQL Server 執行個體所建立的連接。例如,提取訂閱的合併代理程式在訂閱者端執行,因此它對訂閱者所建立的連接就是本機連接。

在舊版的 SQL Server 中,依預設,代理程式是在 SQL Server Agent 服務帳戶的內容下執行。升級之後,本機連接是依這個帳戶的內容而建立。SQL Server 2005 對於複寫代理程式執行及使 Windows 整合式連接到資料庫和其他資源時所依據的每一個帳戶有精細控制權;可對每一個代理程式指定不同帳戶升級之後,建議為每一個代理程式指定不同帳戶。如需詳細資訊,請參閱<升級複寫的資料庫>和<複寫代理程式安全性模型>。

ActiveX 控制項

所有 ActiveX 控制項在撰寫指令碼和初始化時都標示為不安全。

SQL Server 2005 沒有提供快照集代理程式 ActiveX 控制項。請改用新的 Managed 快照集代理程式。如需詳細資訊,請參閱<SnapshotGenerationAgent>和<How to: Create the Initial Snapshot (RMO Programming)>。

distributor_admin 帳戶的密碼

不再支援發行者和遠端散發者之間的信任連接,因為它們不需要密碼 (依預設,在 SQL Server 2000 Service Pack 3 之前的版本中會使用信任連接)。如果您使用遠端散發者,在升級到 SQL Server 2005 之前,將信任連接轉換至不信任連接 (這個問題不影響使用本機散發者的發行者)。如需有關 distributor_admin 帳戶的詳細資訊,請參閱<保護散發者>。

若要決定使用的連接類型

若要變更為不信任連接

  1. 在散發者端執行 sp_changedistpublisher (Transact-SQL) 並指定 'trusted' 值給 @property 參數,指定 'False' 值給 @value 參數。
    ms143470.note(zh-tw,SQL.90).gif附註:
  2. 同時在發行者端和散發者端執行 sp_changedistributor_password (Transact-SQL) 並指定增強式密碼給 @password 參數。

SQL Server Express 不包括 SQL Server Agent

如果您要升級到 SQL Server Express,則必須重新設定複寫同步處理,因為 SQL Server Express 不包括 SQL Server Agent。

如果您想要使用提取訂閱,必須使用 Replication Management Objects (RMO)、Windows Synchronization Manager 或在命令列執行複寫代理程式來同步處理它們。如需詳細資訊,請參閱<複寫資料至 SQL Server Express>。

如果您想要繼續使用 SQL Server Agent 來執行複寫代理程式作業,則必須使用發送訂閱或升級到不同的 SQL Server 版本 (除了 SQL Server Express 和 Microsoft SQL Server 2005 Compact Edition 以外的所有版本都包括 SQL Server Agent)。利用發送訂閱,散發代理程式或合併代理程式會在散發者端執行,因此,SQL Server Agent 可供使用 (SQL Server Express 不得為散發者)。

Microsoft Access (Jet 4.0) 訂閱者

Jet 是 Access 使用的基礎資料庫,而複寫支援訂閱 SQL Server 2000 的 Jet 資料庫。已不再支援這些訂閱。

建議改用 Microsoft SQL Server 2005 Express Edition。Access 可使用 SQL Server 資料庫作為後端,SQL Server 資料庫不受這個問題的影響。如需詳細資訊,請參閱<複寫資料至 SQL Server Express>。

交易式複寫的突破性變更

下列突破性變更將套用至 SQL Server 2005 中的交易式複寫。

功能

描述

Message Queuing 選項,用於佇列更新訂閱

利用佇列更新訂閱,訂閱者的變更會寫入佇列中;從佇列讀取變更之後,由佇列讀取器代理程式傳遞至發行者。在 SQL Server 2000 中,訂閱可以使用 SQL Server 佇列或 Message Queuing 將變更排入佇列。佇列類型是以 sp_addpublication (Transact-SQL)@queue_type 參數指定,它允許 sqlmsmq 的值。在 SQL Server 2005 中,只允許 sql 的值。在升級期間,會將使用 Message Queuing 的現有發行集修改為使用 SQL Server 佇列。如果您有應用程式是依賴使用 Message Queuing 的佇列更新,這些應用程式需要重寫,以配合 SQL Server 佇列。如需有關佇列更新訂閱的詳細資訊,請參閱<交易式複寫的可更新訂閱>。

當 SQL Server 正在升級時,如果 Message Queuing (MSMQ) 服務正在執行,升級會移除現有的 Message Queuing 訂閱佇列。

ms143470.note(zh-tw,SQL.90).gif重要事項:

在 Windows 2000 和 Windows XP 中,Microsoft 分散式交易協調器 (MSDTC) 服務也必須為執行中,因為在該等作業系統上,Message Queuing 需要 MSDTC。

如果 Message Queuing 服務未在執行中,請於升級完成後手動移除佇列。如需有關如何移除佇列的詳細資訊,請參閱 Windows 文件集。

合併式複寫的突破性變更

下列突破性變更將套用至 SQL Server 2005 中的合併式複寫。

功能 描述

從 SQL Server Express 發行

SQL Server MSDE 可作為合併式發行集的發行者。SQL Server Express 是 MSDE 的替代品,它無法作為發行者。它可以訂閱合併式、交易式和快照式發行集。具有更新訂閱的合併式複寫和交易式複寫都允許將訂閱者的變更傳播到發行者。如需有關複寫到 SQL Server Express 的詳細資訊,請參閱<複寫資料至 SQL Server Express>。

變更的批次作業

在舊版 SQL Server 中,合併代理程式所作的變更會採用逐列方式執行。在 SQL Server 2005 中,變更會進行批次作業以增進效能;因此,可在單一陳述式內插入、更新或刪除多個資料列。如果發行集或訂閱資料庫中的任何已發行的資料表有觸發程序,請確定這些觸發程序可以處理多資料列插入、更新及刪除。如需詳細資訊,請參閱<DML 觸發程序的多重資料列考量>。

衝突資料表的重新建立

升級到 SQL Server 2005 時衝突資料表會重新建立,並以 DBO 作為其擁有者。如果有任何資料表是由 SQL Server 2000 的其他使用者所擁有,應用程式可能需要加以修改。

合併式複寫為發行集的每一個發行項建立衝突資料表,並使用 conflict_PublicationName_ArticleName 格式的名稱。所有中繼資料的資料表在升級時都會重新建立,且所有衝突資料表會建立在 DBO 結構描述中。

新識別範圍指派

如果是使用自動識別範圍管理的資料表,複寫在升級時可指派新的識別範圍。如果有任何資料表指派給訂閱者的識別範圍大於指派給發行者,則複寫會指派一個相當於訂閱者的範圍給發行者。

若要決定每一個發行項使用的範圍,請在發行集資料庫中執行 sp_helpmergearticle (Transact-SQL) 並檢查 pub_identity_rangeidentity_range 資料行。

請參閱

概念

複寫回溯相容性

其他資源

複寫的增強功能

說明及資訊

取得 SQL Server 2005 協助