在开发使用复制功能的应用程序之前,应遵循以下常规规划步骤:
定义复制拓扑。
定义应用程序功能。
规划安全性。
选择开发环境。
选择适当的复制编程接口。
本主题的其余部分更详细地介绍了这些步骤。 为了帮助说明规划过程,已包含一个示例。
定义复制拓扑
编程复制的第一步是定义应用程序的复制拓扑。 如果要编写将使用现有复制拓扑的应用程序,例如访问现有订阅服务器上的数据的客户端应用程序,则应转到下一步。
注释
在某些情况下,部署复制拓扑将是应用程序的唯一用途。
定义的复制拓扑取决于许多因素,包括:
是否需要更新复制的数据,以及由谁更新。
有关一致性、自主性和延迟的数据分布需求。
复制环境,包括业务用户、技术基础结构、网络和安全性和数据特征。
复制和复制选项的类型。
复制拓扑及其与复制类型保持一致的方式。
如果不熟悉Microsoft SQL Server 复制,请参阅 复制类型。
定义应用程序功能
定义复制拓扑后,应确定应用程序将提供的功能。 这些功能的范围可以是将订阅同步到应用程序的脚本,以及用于配置复制的用户界面。 复制支持以下常规编程任务:
设置复制。
同步订阅服务器。
维护复制拓扑。
监视复制拓扑。
对复制进行故障排除。
它还通过将复制功能与其他 SQL Server 提供的功能相结合来扩展应用程序。 下表重点介绍了在复制应用程序中可能提供的一些扩展功能。
| 功能性 | 示例: |
|---|---|
| 使用 SQL Server 管理对象进行服务器管理 (SMO) | 一个应用程序,使管理员能够在复制拓扑中附加和配置数据库作为发布服务器。 |
| 使用 ADO.NET 进行数据访问 | 一个应用程序,允许用户在脱机时以编程方式访问和更改本地订阅服务器数据库中复制的销售数据,然后通过单击按钮连接和同步请求订阅。 |
规划安全性
安全性在任何应用程序中都很重要,在编写任何代码之前,应先完成安全规划。 应用程序安全性可以分为三个主要部分:保护数据库、保护复制和编写安全代码。
以下主题提供有关安全性的信息:
选择开发环境
开发复制应用程序时,需要考虑三个基本开发环境。 每个开发环境都有权访问相同的复制功能,但有一些例外情况。 复制应用程序可在以下每个环境中开发。
托管代码
面向对象的开发环境,利用 .NET Framework 编程和 .NET 公共语言运行时(CLR)的优势。 托管代码是适用于 .NET 开发和 SQL Server 应用程序的推荐编程环境。 托管复制接口允许以面向对象的方式对复制管理进行编程,而无需知道 Transact-SQL,在运行脚本中不可用的复制代理时,它还提供一些回调功能。 托管代码是开发可重用组件和用户界面应用程序的最佳环境。
脚本
作为复制系统存储过程执行一系列命令的简单应用程序 Transact-SQL 脚本或批处理文件中的命令。 虽然可以使用 SQL Server 进程内托管提供程序在托管环境中执行脚本,但可以使用托管复制接口(也提供回调功能)获取相同的功能。 脚本是执行只运行几次且不需要回调功能(例如安装复制服务器)的最佳环境。
本机代码
面向对象的开发环境,利用对系统或 COM 对象的直接访问,使代码不受 CLR 管理。 本机代码复制接口已弃用或停止使用。 有关详细信息,请参阅 SQL Server 复制或复制后向兼容性中已弃用的功能。
选择适当的复制编程接口
最后的规划步骤是选择适当的复制编程接口,该接口实现所选开发环境的所需复制功能。 下表显示了可用的复制编程接口。
| 接口 | 环境 | 使用 |
|---|---|---|
| 复制管理对象概念 | 托管代码 | 管理、监视和同步。 |
| Microsoft.SqlServer.Replication | 托管代码 | 同步。 |
| Microsoft.SqlServer.Replication.BusinessLogicSupport | 托管代码 | 创建业务逻辑处理程序以将自定义逻辑与合并同步过程集成。 |
| 复制存储过程 (Transact-SQL) | 脚本编写 | 管理和监视。 |
| 复制代理可执行文件的概念 | 脚本编写 | 同步。 |
示例:
在 Adventure Works 中,需要为世界各地的 200 名销售代表发布数据。 销售代表经常旅行,需要使用笔记本电脑或个人数字助理(PDA)来更改客户数据并添加新订单。 然后,当销售代表将笔记本电脑连接到网络时,需要与发布者同步这些更改。
对于此应用程序,规划步骤可能如下所示:
此应用程序的复制拓扑已存在。 但是,必须在客户端创建新的请求订阅。 发布应使用参数化筛选器将一组唯一的数据复制到每个销售代表。
除了销售应用程序所需的典型数据访问之外,此应用程序还应通过单击按钮使销售人员能够按需同步拉取订阅。 由于销售代表将安装和运行应用程序,因此它还需要能够配置订阅并在客户端应用初始快照。 或者,应用程序将使用 Windows 提供的基础结构来检测无线连接,以便在检测到连接时自动同步订阅。
遵循复制的所有安全准则,包括连接到发布服务器时使用 Windows 身份验证和虚拟专用网络(VPN)。 如果实现 Web 同步,请使用安全套接字层 (SSL) 连接。 有关详细信息,请参阅 “配置 Web 同步”。
为了利用 .NET Framework 的功能,应用程序是使用托管代码语言开发的。
根据这些要求,复制管理对象(RMO)托管接口可以为此应用程序提供所有所需的复制功能。
此示例方案已在 SQL Server 附带的示例应用程序中实现。