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

適用於:SQL Server

管理點對點拓撲與管理一般的異動複寫拓撲類似,但有一些需要特殊考量的地方。 管理點對點拓撲的主要差別在於有些變更需要 「停止」(Quiesce) 系統。 停止系統包括停止所有節點上已發行資料表的活動,並確定每個節點已收到來自其他所有節點的所有變更。 如需詳細資訊,請參閱停止複寫拓撲 (複寫 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

另請參閱

複寫管理常見問題集
SQL Server 資料庫的備份與還原
@loopback_detection