如何:管理點對點拓樸 (複寫 Transact-SQL 程式設計)
管理點對點拓樸與管理一般的交易式發行集拓樸類似,但有一些需要特殊考量的地方。管理點對點拓樸的主要差別在於有些變更需要「停止」(Quiesce) 系統。停止系統包括停止所有節點上已發行資料表的活動,並確定每個節點已收到來自其他所有節點的所有變更。如需詳細資訊,請參閱<如何:停止複寫拓撲 (複寫 Transact-SQL 程式設計)>。如需如何將節點加入至現有拓樸的詳細資訊,請參閱<如何:設定點對點交易式複寫 (複寫 Transact-SQL 程式設計)>。
若要將發行項加入至現有的組態
停止系統。
停止拓樸中每個節點的「散發代理程式」。如需詳細資訊,請參閱<複寫代理程式可執行檔概念>或<如何:啟動和停止複寫代理程式 (SQL Server Management Studio)>。
執行 CREATE TABLE 陳述式,在拓樸中的每個節點加入新資料表。
使用 bcp 公用程式,以手動方式在所有節點大量複製新資料表的資料。
執行 sp_addarticle,在拓樸中的每個節點建立新發行項。如需詳細資訊,請參閱<如何:定義發行項 (複寫 Transact-SQL 程式設計)>。
[!附註]
在執行 sp_addarticle 之後,複寫會將發行項自動加入至拓樸中的訂閱。
重新啟動拓樸中每個節點的「散發代理程式」。
若要對發行集資料庫進行結構描述變更
停止系統。
執行資料定義語言 (DDL) 陳述式,修改已發行資料表的結構描述。如需受支援結構描述變更的詳細資訊,請參閱<對發行集資料庫進行結構描述變更>。
在已發行資料表上繼續活動之前,請再次停止系統。如此可確保在複寫任何新的資料變更之前,所有節點都已接收到結構描述變更。
範例
下列範例示範如何在擁有兩個節點的現有點對點複寫拓樸中,加入新的資料表發行項。
-- Create the new table at both nodes.
CREATE TABLE AdventureWorks2008R2.dbo.ProductTest (column1 int, Column2 int);
CREATE TABLE AdventureWorks2008R2Replica.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 AdventureWorks2008R2..ProductTest in NewTable.bcp �T �SMYPUBLISHER n/c
bcp AdventureWorks2008R2Replica..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 AdventureWorks2008R2
EXEC sp_addarticle
@publication = @publication,
@article = @newtable,
@source_table = @newtable,
@destination_table = @newtable,
@force_invalidate_snapshot = 0;
GO