与移动用户交换数据

向移动用户提供数据和从移动用户收集数据的过程是许多应用程序的关键部分。大多数支持移动用户的应用程序都属于下面两大类别之一:

  • 客户关系管理 (CRM) 和销售自动化 (SFA)

    例如,销售人员可以在访问客户时使用 SFA 应用程序输入订单数据。随后将此数据传回中央位置,如公司总部或数据中心。

  • 现场自动化 (FFA)

    例如,现场工作人员(送货司机、维护工作人员、检查人员及其他人员)可以使用手持设备上的 FFA 应用程序,从远程地点收集和传输数据。送货司机可以在交货地点输入包裹递送的有关数据,而此数据随后将传输回中央位置。

这两种应用程序需要的复制功能非常相似。而应用程序间的主要区别在于数据是否由多个用户更新。此问题将在本主题的“此方案的一般要求”部分中进行探讨。

下列关系图说明了将数据传递给移动用户的两种不同方法:一种是使用便携式计算机,另一种是使用其他设备(运行 Microsoft SQL Server Compact 3.5 SP1)。第一种方法最常用于 SFA 和 CRM 应用程序,而第二种方法则最常用于 FFA 应用程序。但是,每种方法都可以用于这两种类别的应用程序。

  • 第一个关系图说明了这样一种方案:一组使用便携式计算机的用户直接连接到中心站点:

    从销售人员向总部复制数据

  • 第二个关系图说明了另一种方案:使用设备的用户通过 Microsoft Windows Internet 信息服务 (IIS) 服务器连接到中心站点。使用 SQL Server Compact 3.5 SP1 时需要 IIS 服务器。

    向送货司机复制数据

Adventure Works Cycles 示例

Adventure Works Cycles 是一家虚构的制造公司,用于演示数据库概念和方案。有关详细信息,请参阅AdventureWorks 示例数据库

Adventure Works Cycles 有一支庞大的销售队伍,他们每天在现场要花费大量的时间直接与公司的主要客户(独立的特许自行车经销商)一起工作。各个销售小组被派往不同的地区,每个销售人员通常管理自己的客户。但是,客户数据可以在销售人员和销售经理间共享。销售人员在其便携式计算机上输入订单数据,并在方便的时候将此数据传送到总部。

Adventure Works Cycles 对部件和整车的送货使用 A-1 发货方式。A-1 发货的送货司机都使用运行 SQL Server Compact 3.5 SP1 的设备。送货后,司机输入每次送货的数据。此数据将复制到 A-1 发货总部,并从设备中删除。然后再通过客户的 Extranet 将该数据提供给 Adventure Works Cycles 使用。

此方案的一般要求

CRM、SFA 和 FFA 应用程序通常具有如下特性,相应的复制解决方案必须考虑到这些特性:

  • 数据同步应可编程,这样才能自定义便携式计算机或设备上的应用程序,从而使最终用户无需具备复制方面的知识即可进行同步。

  • 在大多数移动应用程序中,数据可以在中心站点和远程站点输入和更新。在 FFA 应用程序中,大多数数据是在远程站点输入的。

  • 远程用户使用便携式计算机、设备或 Tablet PC 输入和更新数据。

  • 远程用户必须能够进行独立更新,而无需连接到中心站点。

  • 由于多个用户有可能独立更新相同数据,这样会引发数据冲突,必须对其进行处理。

  • 某些数据(例如,产品定价表中的数据)应当仅在中心站点进行更新。

  • 用户应该不仅能够在计划时间同步数据,还能够按需同步数据。

  • 应用程序必须控制远程站点保持不同步状态的时间。

  • 某些表需要进行筛选,以便让每一个用户接收来自一个或多个表的不同数据。例如,每个销售人员仅收到其客户的联系信息。

  • 某些数据必须作为一个单元在站点之间传输。例如,如果从远程用户向中心站点发送订单,则订单表头必须在订单详细信息之前提交。

  • 同步数据时,应用程序可能会要求执行自定义业务逻辑。

  • 应用程序可能要求通过 Internet,而非 VPN 或 IPSEC 拨号网络连接同步数据。

CRM 和 SFA 应用程序与 FFA 应用程序之间在复制方面的主要区别在于数据是否由多个用户更新(多个用户的更新可能导致冲突)。多个用户更新的数据量取决于数据筛选的程度。例如,如果对数据进行筛选,使用户都只更新其自己的数据集,则用户间便不会发生冲突:

  • 在 CRM 和 SFA 应用程序中,通常都会筛选数据,但有些数据仍将在多个位置更新。某些数据仅在总部更新,某些数据由单个远程用户更新,还有一些数据由多个远程用户更新。下列关系图说明了常用于 CRM 和 SFA 的筛选:

    针对销售自动化应用程序的筛选

  • 在 FFA 应用程序中,通常情况下,数据主要从现场收集,随后上载到总部,其间不会出现冲突,因为单个远程用户只更新给定部分的数据。下列关系图说明了常用于 FFA 应用程序的筛选:

    针对场外自动化应用程序的筛选

用于此方案的复制类型

SQL Server 用出版业的术语来说明复制系统的组件。这些组件包括发布服务器、订阅服务器、发布、项目和订阅。在上面的两个关系图中,中心站点为发布服务器。中央站点的数据为发布,每个数据表为项目(项目也可以是其他数据库对象,如存储过程)。每个销售人员的便携式计算机,以及送货司机的设备都是发布的订阅服务器,它们接收架构和数据作为订阅。有关系统组件的详细信息,请参阅复制发布模型概述

SQL Server 针对不同的应用程序要求提供了不同类型的复制:快照复制、事务复制以及合并复制。此方案最好用合并复制来实现。合并复制非常适合处理前一部分中所述的要求。有关合并复制的详细信息,请参阅合并复制概述合并复制的工作机制

与此方案相关的合并复制选项

合并复制提供了多个选项用以处理本主题前面说明的要求。下面的列表列出了每项要求以及针对每项要求的合并复制选项。

  • 数据同步应可编程。

    复制通过存储过程和复制管理对象 (RMO) 提供可编程性。RMO 通常用于移动应用程序。有关如何对复制进行编程的详细信息,请参阅开发人员指南(复制)Sales Orders Sample Scenario

  • 在大多数移动应用程序中,数据可以在中心站点和远程站点输入和更新。在 FFA 应用程序中,大多数数据是在远程站点输入的。

    合并复制提供此项功能,无需指定任何单独的选项。

  • 远程用户使用便携式计算机、设备或 Tablet 输入和更新数据。

    便携式计算机和 Tablet PC 可以运行 SQL Server Standard Edition 和其他版本(包括 SQL Server Compact 3.5 SP1),但 Pocket PC 设备要求运行 SQL Server Compact 3.5 SP1。通过合并复制可以创建可供 SQL Server Compact 3.5 SP1 使用的发布和订阅。有关详细信息,请参阅向 SQL Server Compact 复制数据

  • 远程用户必须能够进行独立更新,而无需连接到中心站点。

    合并复制提供此项功能,无需指定任何单独的选项。

  • 由于多个用户有可能独立更新相同数据,这样会引发数据冲突,必须对其进行处理。

    对于可能出现数据冲突的情况,合并复制提供了冲突检测和解决方法。最佳做法是在设计应用程序时避免发生冲突,而在无法避免时可以选择默认冲突解决机制(先到者入选),或使用自定义冲突解决机制。有关详细信息,请参阅检测并解决合并复制冲突

  • 某些数据(例如,产品定价表中的数据)应当仅在中心站点进行更新。

    对于只能在发布服务器上更新的那些表,合并复制提供了仅供下载的项目。有关详细信息,请参阅使用仅下载项目优化合并复制的性能

  • 用户应该不仅能够在计划时间同步数据,还能够按需同步数据。

    复制提供了两种订阅类型:推送订阅和请求订阅。请求订阅更适用于按需同步。有关订阅类型和计划同步的详细信息,请参阅订阅发布同步数据

  • 应用程序必须控制远程站点保持不同步状态的时间。

    使用合并复制,可以设置订阅过期时间,以确保在特定时间内同步所有订阅服务器。有关详细信息,请参阅订阅过期和停用

  • 某些表需要进行筛选,以便让每一个用户接收来自一个或多个表的不同数据。例如,每个销售人员可能仅收到其客户的联系信息。

    使用合并复制,可以对列和行进行筛选。行筛选器可以是静态的,也可以是参数化的。静态筛选器仅在创建发布时应用,它会生成一个数据集。参数化筛选器在每次订阅服务器同步时应用,它会为每个订阅服务器生成不同的数据集。CRM 和 SFA 应用程序通常使用参数化筛选器,但也可以使用静态筛选器。有关详细信息,请参阅为合并复制筛选已发布数据

  • 某些数据必须作为一个单元在站点之间传输。例如,如果从远程用户向中心站点发送订单,则订单表头必须在订单详细信息之前提交。

    合并复制允许您指定必须将一组相关的表作为一个单元进行处理。该单元称为“逻辑记录”。有关详细信息,请参阅通过逻辑记录对相关行的更改进行分组

  • 同步数据时,应用程序可能会要求执行自定义业务逻辑。

    使用合并复制,可以指定在同步期间执行的代码。此代码可响应各种事件,并对正在同步的数据具有访问权限。有关详细信息,请参阅在合并同步期间执行业务逻辑

  • 应用程序可能会要求通过 Internet 而非通过专用连接来实现数据同步。

    使用 (SQL Server Compact 3.5 SP1) 时,需要通过 HTTP 或 HTTPS 连接进行数据同步。对于其他版本的 SQL Server,可以使用 Web 同步,Web 同步要求使用 HTTPS 连接。有关详细信息,请参阅合并复制的 Web 同步

实现此方案的步骤

若要实现此方案,必须先创建一个发布和一些订阅,然后对各个订阅进行初始化。有关各步骤的详细信息,请单击下面的链接:

在对订阅进行了初始化且数据开始在发布服务器和订阅服务器之间流动之后,您最好查阅以下主题,了解常见管理任务和监视任务的有关信息: