管理点对点拓扑(复制 Transact-SQL 编程)

管理对等拓扑类似于管理典型的事务复制拓扑,但有许多方面有特殊注意事项。 在管理对等拓扑时,主要不同之处在于某些更改需要使系统静默。 使系统静默涉及暂停所有节点上已发布表的活动,并确保每个节点已同步接收到来自所有其他节点的所有更改。 有关详细信息,请参阅停止复制拓扑(复制 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 AdventureWorks2012.dbo.ProductTest (column1 int, Column2 int);
CREATE TABLE AdventureWorks2012Replica.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 AdventureWorks2012..ProductTest in NewTable.bcp -T -SMYPUBLISHER n/c
bcp AdventureWorks2012Replica..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 AdventureWorks2012

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

另请参阅

复制管理常见问题解答
SQL Server 数据库的备份和还原
对等事务复制