管理點對點拓撲 (複寫 Transact-SQL 程式設計)

適用於:SQL Server

管理點對點拓撲與管理一般的異動複寫拓撲類似,但有一些需要特殊考量的地方。 管理點對點拓撲的主要差異在於,某些變更需要先將系統靜止。 讓系統進入靜止狀態,包含停止所有節點上已發行資料表的活動,並確保每個節點都已收到來自所有其他節點的全部變更。 如需詳細資訊,請參閱使複寫拓撲靜止化 (複寫 Transact-SQL 程式設計)。

注意

在點對點拓撲中,散發者無法使用比提取訂閱者舊的 SQL Server 版本。

若要將文章加入至現有的組態

  1. 使系統進入靜止狀態。

  2. 停止拓撲中每個節點的「散發代理程式」。 如需詳細資訊,請參閱複寫代理程式可執行檔概念或啟動和停止複寫代理程式 (SQL Server Management Studio)。

  3. 執行 CREATE TABLE 該語句,在拓撲的每個節點新增資料表。

  4. 使用 bcp 公用程式,以手動方式在所有節點大量複製新資料表的資料。

  5. 執行 sp_addarticle ,在拓撲中的每個節點建立新發行項。 如需詳細資訊,請參閱 定義發行項。

    注意

    在執行 sp_addarticle 之後,複寫會將發行項自動加入至拓撲中的訂閱。

  6. 重新啟動拓撲中每個節點上的發送代理程式。

若要對發行集資料庫進行結構描述變更

  1. 使系統進入靜止狀態。

  2. 執行資料定義語言 (DDL) 陳述式,修改已發行資料表的結構描述。 如需有關支援的結構描述變更的詳細資訊,請參閱對發行資料庫進行結構描述變更。

  3. 在已發佈的資料表上恢復作業之前,請再次讓系統進入靜止狀態。 如此可確保在複寫任何新的資料變更之前,所有節點都已接收到結構描述變更。

範例

下列範例示範如何在具有兩個節點的現有對等式複寫拓撲中,新增一個新的資料表發行項目。

-- Create the new table at both nodes.
CREATE TABLE AdventureWorks2022.dbo.ProductTest (column1 int, Column2 int);
CREATE TABLE AdventureWorks2022Replica.dbo.ProductTest (column1 int, Column2 int);
GO
REM Bulk insert data into both the publication and subscription databases.
REM The BCP format depends on the snapshot format (native or character).
REM Execute at the command prompt.

bcp AdventureWorks2022..ProductTest in NewTable.bcp -T -SMYPUBLISHER n/c
bcp AdventureWorks2022Replica..ProductTest in NewTable.bcp -T -SMYPUBLISHER n/c
--- Add the article to the publication.
DECLARE @publication AS sysname;
DECLARE @newtable AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @newtable = N'ProductTest';

USE AdventureWorks2022;

EXEC sp_addarticle 
  @publication = @publication,
  @article = @newtable,
  @source_object = @newtable,
  @destination_table = @newtable,
  @force_invalidate_snapshot = 0;
GO