标题: 两种与SQL Server数据库交换数据的方法 [打印本页] 作者: lbsong 时间: 2008-12-11 15:46 标题: 两种与SQL Server数据库交换数据的方法 Microsoft SQL Server 2005 Mobile Edition 3.0 (SQL Server Mobile) 支持两种与 SQL Server 数据库交换数据的方法:
◆合并复制,提供一种强大且功能齐全的解决方案,该解决方案允许移动应用程序对复制的数据自行更改,然后再将这些更改与 Microsoft SQL Server 数据库进行合并,并在必要时解决冲突。
◆远程数据访问 (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? 连接。
有关合并复制功能工作原理的一般信息,请参阅 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) 功能还是复制功能,取决于移动应用程序的用途、功能、规模和要求。每种连接数据解决方案都有各自的优缺点。这些优缺点将在随后各节中加以讨论。
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 服务] 将数据传输到后端系统。
如上文所述,您需要通过在服务器上创建发布来进行复制准备。要复制到订阅者的数据和架构将在服务器上创建发布时指定。首次创建订阅时,将在客户端自动定义架构。发布定义了要复制到订阅者的表(文章),包括行筛选(使用 WHERE 子句限制数据流)和列筛选(限制表中要复制的列)。发布可以包含一个或多个表。在 SQL Server Mobile 数据库中,整个发布定义(包括正在复制的表的数据和架构)是使用一种同步方法创建的。
简而言之,最初在 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 连接表进行细微的架构更改。
使用复制功能时,将分别在发布数据库和 SQL Mobile 数据库中创建系统对象,前者是在创建发布时建立,而后者则是在创建订阅时建立的。这些对象允许在 SQL Server 与 SQL Server Mobile 之间使用非常强大的数据交换模型。复制功能可用于跟踪发布和订阅数据库中的更改。发布者与订阅者之间的数据流控制有两种跟踪级别:
有关跟踪级别的详细信息,请参阅 SQL Server Mobile Books Online 中的“Using Row-Level and Column-Level Tracking”和 SQL Server Books Online 中的“Row-Level Tracking and Column-Level Tracking”。
RDA 使用 SQL Server Mobile 数据库中的系统对象来跟踪对数据所做的更改。获得此信息后,RDA 仅将这些更改(特别是更改的行)从 SQL Server Mobile 推到 SQL Server。但如果 SQL Server Mobile 要从 SQL Server 检索数据更改,则需要完全刷新客户端数据。
简而言之,复制功能支持增量更改的双向数据交换,因为数据更改是在发布者和订阅者中同时进行跟踪的。而 RDA 仅支持从 SQL Server Mobile 到 SQL Server 的增量更改数据交换,并且需要对数据进行完全刷新才能将 SQL Server 中的更改更新到 SQL Server Mobile,因为数据更改仅在 SQL Mobile 数据库中进行跟踪。
可以传播的表类型
将表添加到复制发布中时,可以设置表的属性来控制数据流。除了控制发布者与订阅者之间的数据流以外,这些表属性还可用于增强同步的性能。有关详细信息,请参阅 SQL Server Books Online 中的“Parameterized Row Filters”和“Optimizing Merge Replication Synchronization Performance with Download-Only Articles”。
使用复制作为连接解决方案时,潜在的冲突包括由不同用户更改的数据以及由于错误而无法应用的行。复制完全支持服务器上的冲突解决和管理,包括内置和自定义的冲突解决程序。有关详细信息,请参阅 SQL Server Mobile Books Online 中的“Replication Conflict Detection and Resolution”和 SQL Server Books Online 中的“Merge Replication Conflict Detection and Resolution”。