当前位置导航:炫浪网>>网络学院>>编程开发>>MsSQL教程

SQL Server M复制和远程数据访问对比


  引言
  
  Microsoft SQL Server 2005 Mobile Edition 3.0 (SQL Server Mobile) 支持两种与 SQL Server 数据库交换数据的方法:
  
  1.合并复制,提供一种强大且功能齐全的解决方案,该解决方案允许移动应用程序对复制的数据自行更改,然后再将这些更改与 Microsoft SQL Server 数据库进行合并,并在必要时解决冲突。
  
  2.远程数据访问 (RDA),使移动应用程序能够方便地将远程 Microsoft SQL Server 数据库表中的数据读取(拉)到本地 SQL Server Mobile 数据库表中,或者将本地 SQL Server Mobile 数据库表中的数据发送(推)到远程 Microsoft SQL Server 数据库表中。RDA 还可用于在运行 SQL Server 的服务器上发出 SQL 命令。
  
  将 SQL Server Mobile 连接到 SQL Server
  
  使用 RDA 或复制功能时,SQL Server Mobile 将通过 Microsoft Internet Information Services (IIS) 服务器连接到 SQL Server。由于与 SQL Server 的连接由 IIS 处理,因此您的设备只需能够使用 HTTP 或 HTTPS 协议连接到 IIS Web 服务器即可。这样一来,您就可以通过支持 HTTP 的任何类型的网络连接执行 RDA 和复制操作了,包括:局域网 (LAN)、广域网 (WAN) 和 Microsoft ActiveSync? 连接。
  
  RDA 和复制功能都非常适合无线传输。它们采用压缩来减小传输数据的大小,并采用加密在传输期间保护敏感的用户数据。
  
  在连接到 SQL Server 时,RDA 和复制功能都支持集成 Windows 身份验证和 SQL Server 身份验证。
  
  合并复制简介
  
  SQL Server Mobile 复制基于 Microsoft SQL Server 合并复制。可以使用 Microsoft SQL Server 2000 数据库或 Microsoft SQL Server 2005 数据库来实现合并复制。
  
  合并复制非常适合移动应用程序,因为它允许分别在便携式设备和服务器上自行更新数据。之后可以对该设备和服务器上的数据进行同步,以将客户端的更改发送到服务器,或从服务器接收新的更改。
  
  尽管与 RDA 相比,合并复制需要在服务器上进行更多的配置和维护,但是使用合并复制却有许多优点,包括:
  
  复制提供了内置和自定义的冲突解决功能。
  
  通过复制可以同时对多个表中的数据进行同步。
  
  复制提供了丰富的数据复制选项,包括:
  
  选择文章类型并进行筛选以提高性能
  
  标识范围管理
  
  Microsoft SQL Server 包括大量工具,可用于:
  
  创建和同步 SQL Server Mobile 订阅
  
  监视订阅者的每次发布活动
  
  有关合并复制功能工作原理的一般信息,请参阅 SQL Server Books Online 中的“How Merge Replication Works”。有关 SQL Server Mobile 订阅者的相关复制信息,请参阅 SQL Server Mobile Books Online 中的“How Replication Works”和“Replication Architecture”。
  
  远程数据访问 (RDA) 简介
  
  远程数据访问 (RDA) 使移动应用程序能够访问远程 SQL Server 数据库表中的数据,并将这些数据存储在本地 SQL Server Mobile 数据库表中。随后,该应用程序就可以读取和更新本地 SQL Server Mobile 数据库表。SQL Server Mobile 可以选择跟踪对本地表所做的所有更改。之后,应用程序可以将本地表中更改过的记录更新回 SQL Server 表。
  
  在 SQL Server Mobile 中,将数据从 SQL Server 表传播至本地 SQL Server Mobile 表的过程称为“拉”数据。将本地 SQL Server Mobile 表中所做的更改传播回 SQL Server 表的过程称为“推”数据。
  
  在不需要使用 SQL Server Mobile 合并复制的全部功能(包括冲突解决)时,适合使用 RDA。
  
  决定在 SQL Mobile 应用程序中使用远程数据访问 (RDA) 功能还是复制功能,取决于移动应用程序的用途、功能、规模和要求。每种连接数据解决方案都有各自的优缺点。这些优缺点将在随后各节中加以讨论。
  
  功能对比
  
  本节简要介绍对复制与远程数据访问 (RDA) 之间的可对比功能支持的差异。本节的主要目的并不是介绍复制或 RDA 的每项可用功能,而只是提供可对比的那些功能的对比。例如,有许多复制功能没有相应的 RDA 功能,因此这些就不是本文所探讨的内容。
  
  服务器侵害
  
  SQL Server Mobile 的大量合并复制功能来自于 SQL Server 的合并复制功能。SQL Server Mobile 通过订阅 SQL Server 发布产品来利用这些功能。通过在服务器上创建发布,可以将大量的系统表添加到即将发布的数据库中,并将“唯一标识符”系统列添加到即将发布的每个用户表中。这些系统对象将被添加到服务器数据库中,用于对复制进行管理。RDA 不需要对服务器上的数据库进行任何更改。由于 RDA 对服务器上的架构没有侵害性,因此 RDA 的功能有一定限制,不像复制那样功能齐备,但是该功能可用于在 SQL Server 与 SQL Server Mobile 之间传输数据,而无需任何服务器端配置工作。在有些情况下,您可能无权变更后端系统中的架构。如果是这种情况,RDA 是潜在的连接选择,可用于在 SQL Server 与 SQL Server Mobile 之间传输数据更改。如果需要强大的复制功能而且无法变更后端数据库架构,则可以考虑的另一个选择是使用中间层 SQL Server 作为复制服务器,然后使用其他无侵害技术 [如数据转换服务 (DTS) 和 Web 服务] 将数据传输到后端系统。
  
  简而言之,复制功能需要对服务器数据库的架构进行一些细微的更改,但通过这些更改可获得一组非常强大的功能,而 RDA 不需要对服务器数据库进行任何更改,但它不是功能齐备的连接解决方案。
  
  数据和架构定义
  
  如上文所述,您需要通过在服务器上创建发布来进行复制准备。要复制到订阅者的数据和架构将在服务器上创建发布时指定。首次创建订阅时,将在客户端自动定义架构。发布定义了要复制到订阅者的表(文章),包括行筛选(使用 WHERE 子句限制数据流)和列筛选(限制表中要复制的列)。发布可以包含一个或多个表。在 SQL Server Mobile 数据库中,整个发布定义(包括正在复制的表的数据和架构)是使用一种同步方法创建的。
  
  使用 RDA 时,客户端控制从服务器中传输哪些数据,包括数据定义(包括行筛选)和架构定义(包括列筛选)。RDA 在每个 RDA 拉进程中只能对一个表进行同步,这与复制有所不同,后者可以在一次同步操作中处理多个表。
  
  简而言之,最初在 SQL Server Mobile 数据库中创建的数据和架构在服务器上是使用复制功能进行定义的,而在客户端上是使用 RDA 进行定义的。复制发布可以包含多个表,而 RDA 每次下载(RDA 拉进程)只能处理一个表。
  
  架构更改
  
  使用复制功能时,在最初创建订阅后可以将架构更改(如添加或删除列,添加或删除约束,以及更改列定义)复制到订阅者。当需要将挂起的架构更改复制到订阅者时,将首先复制架构更改,然后在发布者与订阅者之间交换所导致的增量更改。服务器架构更改(例如,添加列或删除应用程序中未在使用的列)不一定会要求对应用程序进行更改和重新编译。允许对订阅数据库的架构进行细微的更改。有关详细信息,请参阅 SQL Server Mobile Books Online 中的“Replication Limitations”。
  
  使用 RDA 时,不支持在服务器上进行架构更改。如果进行了架构更改,从客户端到服务器的推操作可能会失败。如果更改了服务器架构,则客户端必须先删除表,然后再次从服务器拉出所有数据。更改服务器架构可能会要求对应用程序进行更改并重新编译。允许对客户端的架构进行细微的更改。有关详细信息,请参阅 SQL Server Mobile Books Online 中的“Remote Data Access (RDA) Limitations”。
  
  简而言之,使用复制功能时,支持服务器架构更改,而且服务器架构更改不会导致订阅者上的数据丢失。但是,使用 RDA 时,不支持服务器架构更改,而且服务器架构更改可能会导致客户端的数据丢失。复制和 RDA 功能均允许对 SQL Server Mobile 连接表进行细微的架构更改。
  
  标识列
  
  在许多应用程序中,您可能需要使用递增的编号来管理在客户端数据库中插入的记录。例如,如果用户正在表中输入新订单,则您可能需要为每个订单分配自动递增的编号。使用这类系统时,必须确保这些编号在客户端之间不会引起冲突。对于发布和订阅,复制功能支持 integer 和 bigint 列的自动标识范围管理。使用自动标识范围管理,可以确保无论有多少客户端,都不会发生行冲突。有关使用此复制功能的详细信息,请参阅 SQL Server Books Online 中的“Replicating Identity Columns”。
  
  使用 RDA 时,不支持标识列的自动管理。要使用此数据类型属性,必须在整个系统中手动管理值。
  
  约束和索引
  
  由于复制功能支持在发布定义中使用多个表,因此引用完整性约束和索引会自动从服务器复制到订阅数据库。
  
  而由于 RDA 每次只能拉一个表,因此不会传输引用完整性约束,但是可以传输索引。其他架构定义必须在客户端进行定义。
  
  交换跟踪数据更改
  
  使用复制功能时,将分别在发布数据库和 SQL Mobile 数据库中创建系统对象,前者是在创建发布时建立,而后者则是在创建订阅时建立的。这些对象允许在 SQL Server 与 SQL Server Mobile 之间使用非常强大的数据交换模型。复制功能可用于跟踪发布和订阅数据库中的更改。发布者与订阅者之间的数据流控制有两种跟踪级别:
  
  1.表的行级别跟踪会导致在同步期间传输整个行。这种跟踪级别对依赖于连接速度的
相关内容
赞助商链接