共用方式為


SQL Server 複寫中的行為變更

本主題描述 SQL Server 複寫中的行為變更。行為變更會影響 SQL Server 2008 中功能的運作或互動方式 (相較於舊版的 SQL Server)。

SQL Server 2005 中所做的行為變更

本章節描述對 SQL Server 2005 複寫功能所做的行為變更。

影響所有複寫類型的行為變更

下列變更會影響所有複寫類型。

功能

描述

複寫代理程式安全性模型

在舊版的 SQL Server 中,依預設,代理程式是依 SQL Server Agent 服務帳戶的內容執行。SQL Server 現在對於複寫代理程式執行及使 Microsoft Windows 整合式連接到資源庫和其他資源時所依據的每一個帳戶有較細的控制權;可對每一個代理程式指定不同帳戶。如需詳細資訊,請參閱<安全性與保護 (複寫)>和<複寫代理程式安全性模型>。如需有關這項變更如何影響升級的資訊,請參閱<升級複寫資料庫的考量>和<SQL Server 複寫中的突破性變更>的「新的複寫代理程式安全性模型」一節。

Windows Synchronization Manager

在 SQL Server 2005 之前的 SQL Server 版本中,依預設會啟用以 Synchronization Manager 同步處理訂閱的功能。在 SQL Server 2005 中,如果您想要使用 Synchronization Manager,就必須明確啟用這選項。如需詳細資訊,請參閱<如何:使用 Windows Synchronization Manager 同步處理訂閱 (Windows Synchronization Manager)>。

複寫衝突檢視器

在 SQL Server 2000 中,封裝複寫衝突檢視器的目的是為了轉散發。在 SQL Server 2005 中,並未個別封裝該檢視器。若要在應用程式中加入複寫衝突檢視器,您必須在部署此應用程式的電腦上安裝 Microsoft .NET Framework 2.0,並且複製數個檔案到電腦上。如需詳細資訊,請參閱 Upgrade Advisor 說明中的「其他複寫升級問題」。如需有關 Upgrade Advisor 的詳細資訊,請參閱<使用 Upgrade Advisor 來準備升級>。

結構描述選項變更

結構描述選項可以讓您指定與資料表 (例如索引和條件約束) 相關聯之屬性和物件的複寫方式。數個結構描述選項的行為在 SQL Server 2005 中已變更,此主題的下個章節會提供詳細資訊。

結構描述選項行為變更

下表摘要說明 SQL Server 2005 中的結構描述選項變更。

[!附註]

如果您已在 SQL Server 2000 中設定 0x8000 結構描述選項,則此選項會在升級至 SQL Server 2005 停用。對於結構描述選項 0x100x40,複寫可能會在 SQL Server 2005 中建立比 SQL Server 2000 中更大量的索引。

選項

有在 SQL Server 2000 中設定選項時的行為

有在 SQL Server 2005 中設定選項時的行為

0x80

建立條件約束或索引。如果也啟用 0x8000 選項,則主索引鍵會建立為具有索引的條件約束。如果沒有啟用 0x8000 選項,則只會建立主索引鍵資料行的索引。

在訂閱者端建立主索引鍵條件約束。即使未啟用 0x100x40 選項 (這些選項控制其他情況下的索引建立),還是會複寫任何與條件約束相關的索引。

0x4000

建立條件約束或索引。如果也啟用 0x8000 選項,則唯一條件約束會建立為具有索引的條件約束。如果沒有啟用 0x8000 選項,則只會建立資料行的索引。

在訂閱者端建立任何唯一條件約束。即使未啟用 0x100x40 選項 (這些選項控制其他情況下的索引建立),還是會複寫任何與條件約束相關的索引。

0x8000

如果也指定 0x800x4000 選項,就會建立主索引鍵條件約束和唯一條件約束。如果沒有指定任何選項,則 0x8000 選項將沒有作用。

此選項無效。

交易式複寫的行為變更

下列變更會影響交易式複寫。

功能

描述

訂閱者物件擁有權

使用 SQL Server 2005 新增發行集精靈來建立發行集時,在訂閱者端建立的物件之擁有者預設為發行者端的對應物件的擁有者之值。在舊版中,在訂閱者上建立物件期間並不指定擁有者;它預設為與用來連接訂閱者的散發代理程式帳戶相關聯的擁有者。預存程序 sp_addarticle (Transact-SQL) 的行為不變。

可更新訂閱安全性模式

sp_link_publication@security_mode 參數會支配立即更新訂閱的觸發程序如何在發行者端執行呼叫。在 SQL Server 2005 中,這個參數的選項為:

  • 0:使用 SQL Server 驗證,將預存程序中指定的登入當做登入和密碼。

  • 1:使用在訂閱者端進行變更之使用者的安全性內容 (SQL Server 驗證或 Windows 整合式驗證)。

  • 2:使用現有的使用者自訂連結伺服器登入。

在舊版的 SQL Server 中,選項 0 是用來指定從訂閱者到發行者而不是到連結伺服器的動態遠端程序呼叫 (RPC)。

合併式複寫的行為變更

下列變更會影響合併式複寫。

功能

描述

發行集相容性層級

在舊版的 SQL Server,如果您啟用一個需要更高層級的功能,就會自動增加相容性層級。在 SQL Server 2005 中,在啟用需要相容性層級的功能之前,您必須手動將相容性層級設定為 90RTM。如需詳細資訊,請參閱<在複寫拓撲中使用多個 SQL Server 版本>的「合併式發行集的相容性層級」一節。

補償動作

在舊版的 SQL Server 中,如果在同步處理期間發生錯誤 (例如,強制違規),會採取補償動作。在某些案例中,此行為是恰當的,但在某些案例中,可能會有問題;例如,一個不正確設定而產生錯誤的訂閱者,會造成在發行者端或所有其他訂閱者端的變更未完成。

在 SQL Server 2005 中,sp_addmergearticle@compensate_for_errors 參數會控制是否採取補償動作。當設為 False (預設值) 時,會停用補償動作;不過,仍然會記錄錯誤,且後續合併仍將繼續嘗試套用變更。雖然受影響資料列的資料看起來不再聚合,但只要錯誤一解決,即可套用變更讓資料聚合。若設為 True,則在同步處理期間無法套用至節點的變更會導致發生補償動作,來恢復所有其他節點的變更。

附註附註
如果發行項的來源資料表已經在另一個發行集發行,則兩個發行項的 @compensate_for_errors 的值必須相同。對於在執行 SQL Server 2000 8.00.858 版和更早版本 (包括 Service Pack 3) 的訂閱者端的提取訂閱,即使 @compensate_for_errors 設為 False,也會發生補償動作。

衝突資料表

在舊版的 SQL Server 中,合併式複寫為發行集的每一個資料表發行項建立一個衝突資料表,並使用 conflict_<ArticleName> 格式的名稱。在 SQL Server 2005 中,這項資訊包含在兩份資料表中:MSmerge_conflicts_info 和含有 MSmerge_conflict_<PublicationName>_<ArticleName> 格式之名稱的資料表。

保留性中繼資料清除

SQL Server 2005 使用保留性中繼資料清除,這是在 SQL Server 2000 Service Pack 1 導入的。中繼資料會從下列系統資料表中定期刪除:

  • MSmerge_contents

  • MSmerge_tombstone

  • MSmerge_genhistory

  • 任何映像處理前之資料表 (如果有的話)。如果在發行集啟用了 @keep_partition_changes 同步處理最佳化選項 (如需有關這個選項的詳細資訊,請參閱下一節),則會出現映像處理前之資料表。

@keep_partition_changes 參數

依預設,在舊版的 SQL Server 中,@keep_partition_changes 參數是設為 False,因為它會導致更多資料儲存在發行者端。如果發行集相容性層級是 90RTM 或更高,則此參數現在是設為 True,而且@use_partition_groups 參數是設為 False。如需有關這些選項的詳細資訊,請參閱<參數化資料列篩選器>。

請參閱

概念