复制编程概念

适用于:SQL ServerAzure SQL 托管实例

在开发使用复制功能的应用程序之前,请遵循以下一般规划步骤:

  1. 定义复制拓扑。

  2. 定义应用程序功能。

  3. 规划安全性。

  4. 选择开发环境。

  5. 选择合适的复制编程接口。

本文其余部分将更详细地描述这些步骤。 为了帮助说明规划过程,附上了一个例子。

定义复制拓扑

复制编程的第一步是为应用程序定义复制拓扑。 如果你正在编写一个使用现有复制拓扑的应用程序,比如客户端应用访问现有订阅者的数据,那就进入下一步。

注意

在某些情况下,部署复制拓扑是应用程序的唯一目的。

您要定义的复制拓扑取决于多个因素,其中包括:

  • 是否需要更新复制数据,以及由谁更新。

  • 有关一致性、自主性和延迟性的数据分布需求。

  • 复制环境,包括业务用户、技术基础结构、网络和安全性,以及数据特征。

  • 复制类型和复制选项。

  • 复制拓扑及其如何与复制类型相符。

如果你是 Microsoft SQL Server 复制的新手,请参见复制类型

定义应用功能

定义复制拓扑后,决定你的应用提供哪些功能。 应用程序的功能范围广泛,既可以是对订阅进行同步的脚本,也可以是具有用于配置复制的用户界面的应用程序。 复制支持下列常规编程任务:

  • 设置复制。

  • 同步订阅服务器。

  • 维护复制拓扑。

  • 监视复制拓扑。

  • 排除复制故障。

通过将复制功能与 SQL Server 提供的其他功能结合来扩展应用也很常见。 下表列出了一些您可以在您的复制应用程序中提供的扩展功能。

功能 示例
使用 SQL Server 管理对象进行服务器管理 (SMO) 允许管理员在复制拓扑中附加一个数据库并将其配置为发布服务器的应用程序。
使用 ADO.NET 的数据访问 一个应用程序,允许用户在离线时程序性访问并更改本地订阅者数据库中的复制销售数据,然后通过点击按钮连接并同步拉取订阅。

安全规划

安全性在任何应用中都很重要,写代码前应做好安全规划。 应用程序安全性可划分为三个主要部分:保护数据库、保护复制和编写安全的代码。

以下文章提供了有关安全的信息:

选择开发环境

在开发复制应用时,请考虑以下三种基本开发环境。 除了一些例外情况,每种开发环境都可以开发相同的功能。 你可以在以下每种环境中开发复制应用。

  • 托管代码

    面向对象开发环境,利用 .NET 框架编程和 .NET 通用语言运行时(CLR)的优势。 托管代码是适用于 .NET 开发和 SQL Server 应用程序的推荐编程环境。 托管复制接口使你能够以面向对象的方式编程复制管理,而无需了解 Transact-SQL。 它还在运行复制代理时提供一些脚本无法提供的回调功能。 托管代码是开发可重用组件和用户界面应用程序的最佳环境。

  • 脚本

    作为 Transact-SQL 脚本中的复制系统存储过程或批处理文件中的命令执行一系列命令的简单应用程序。 虽然你可以在托管环境中使用SQL Server的进程内托管提供者执行脚本,但使用受管复制接口(同时提供回调功能)也能获得同样的功能。 脚本是执行只运行几次且不需要回调功能的任务的最佳环境,比如安装复制服务器。

  • 本机代码

    面向对象的开发环境,利用对系统或COM对象的直接访问,使代码不受CLR管理。 本机代码复制接口是不推荐使用或已停止使用的。 有关详细信息,请参阅 SQL Server 复制中不推荐使用的功能复制的向后兼容性

选择合适的复制编程接口

计划步骤的最后一步是为所选开发环境选择可实现所需复制功能的合适复制编程接口。 下表展示了可用的复制编程接口。

Interface 环境 使用
复制管理对象概念 托管代码 管理、监视和同步。
Microsoft.SqlServer.Replication 托管代码 同步。
Microsoft.SqlServer.Replication.BusinessLogicSupport 托管代码 创建业务逻辑处理程序,以集成自定义逻辑与合并同步进程。
复制存储过程 (Transact-SQL) 脚本编写 管理和监视。
复制代理可执行程序概念 脚本编写 同步。

示例

在 Adventure Works 中,需要为世界各地的 200 名销售代表发布数据。 销售代表经常出差,需要使用笔记本电脑或个人数字助理(PDA)来更改客户数据并添加新订单。 销售代表需要在将笔记本连接到网络时与 Publisher 同步这些变更。

对于此应用程序,计划步骤可如下:

  1. 此应用程序的复制拓扑已经存在。 不过,你必须在客户端创建一个新的拉取订阅。 在出版物中使用参数化过滤器,将一组独特的数据复制给每位销售代表。

  2. 除了销售应用程序所需的典型数据访问外,此应用程序还应允许销售人员通过单击按钮来按需同步请求订阅。 由于销售代表负责安装和运行应用,它还需要能够配置订阅并在客户端应用初始快照。 可选地,应用利用 Windows 提供的无线连接检测基础设施,在检测到连接时自动同步订阅。

  3. 遵循所有复制的安全指南,包括连接Publisher时使用Windows认证和虚拟专用网络(VPN)。 如果你实现了网页同步,可以使用传输层安全(TLS),之前称为安全套接字层(SSL)连接。 有关详细信息,请参阅 Configure Web Synchronization

  4. 为了利用 .NET 框架的特性,请使用托管代码语言开发应用程序。

  5. 对于这些要求,复制管理对象 (RMO) 托管接口可提供此应用程序所需的所有复制功能。

你可以从 SQL Server 下载实现此示例场景的 AdventureWorks 示例应用。