将 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® 连接。www.想自杀chinai tp ow er.comKm193HP
RDA 和复制功能都非常适合无线传输。它们采用压缩来减小传输数据的大小,并采用加密在传输期间保护敏感的用户数据。www.想自杀chinai tp ow er.comKm193HP
在连接到 SQL Server 时,RDA 和复制功能都支持集成 Windows 身份验证和 SQL Server 身份验证。www.想自杀chinai tp ow er.comKm193HP
合并复制简介
SQL Server Mobile 复制基于 Microsoft SQL Server 合并复制。可以使用 Microsoft SQL Server 2000 数据库或 Microsoft SQL Server 2005 数据库来实现合并复制。www.想自杀chinai tp ow er.comKm193HP
合并复制非常适合移动应用程序,因为它允许分别在便携式设备和服务器上自行更新数据。之后可以对该设备和服务器上的数据进行同步,以将客户端的更改发送到服务器,或从服务器接收新的更改。www.想自杀chinai tp ow er.comKm193HP
尽管与 RDA 相比,合并复制需要在服务器上进行更多的配置和维护,但是使用合并复制却有许多优点,包括: www.想自杀chinai tp ow er.comKm193HP
| • |
复制提供了内置和自定义的冲突解决功能。 www.想自杀chinai tp ow er.comKm193HP
|
| • |
通过复制可以同时对多个表中的数据进行同步。 www.想自杀chinai tp ow er.comKm193HP
|
| • |
复制提供了丰富的数据复制选项,包括: www.想自杀chinai tp ow er.comKm193HP
| • |
选择文章类型并进行筛选以提高性能 www.想自杀chinai tp ow er.comKm193HP
|
| • |
标识范围管理 www.想自杀chinai tp ow er.comKm193HP
|
|
| • |
Microsoft SQL Server 包括大量工具,可用于: www.想自杀chinai tp ow er.comKm193HP
| • |
创建和同步 SQL Server Mobile 订阅 www.想自杀chinai tp ow er.comKm193HP
|
| • |
监视订阅者的每次发布活动 www.想自杀chinai tp ow er.comKm193HP
|
|
有关合并复制功能工作原理的一般信息,请参阅 SQL Server Books Online 中的“How Merge Replication Works”。有关 SQL Server Mobile 订阅者的相关复制信息,请参阅 SQL Server Mobile Books Online 中的“How Replication Works”和“Replication Architecture”。www.想自杀chinai tp ow er.comKm193HP
远程数据访问 (RDA) 简介
远程数据访问 (RDA) 使移动应用程序能够访问远程 SQL Server 数据库表中的数据,并将这些数据存储在本地 SQL Server Mobile 数据库表中。随后,该应用程序就可以读取和更新本地 SQL Server Mobile 数据库表。SQL Server Mobile 可以选择跟踪对本地表所做的所有更改。之后,应用程序可以将本地表中更改过的记录更新回 SQL Server 表。www.想自杀chinai tp ow er.comKm193HP
在 SQL Server Mobile 中,将数据从 SQL Server 表传播至本地 SQL Server Mobile 表的过程称为“拉”数据。将本地 SQL Server Mobile 表中所做的更改传播回 SQL Server 表的过程称为“推”数据。www.想自杀chinai tp ow er.comKm193HP
在不需要使用 SQL Server Mobile 合并复制的全部功能(包括冲突解决)时,适合使用 RDA。www.想自杀chinai tp ow er.comKm193HP
决定在 SQL Mobile 应用程序中使用远程数据访问 (RDA) 功能还是复制功能,取决于移动应用程序的用途、功能、规模和要求。每种连接数据解决方案都有各自的优缺点。这些优缺点将在随后各节中加以讨论。www.想自杀chinai tp ow er.comKm193HP
数据和架构定义
如上文所述,您需要通过在服务器上创建发布来进行复制准备。要复制到订阅者的数据和架构将在服务器上创建发布时指定。首次创建订阅时,将在客户端自动定义架构。发布定义了要复制到订阅者的表(文章),包括行筛选(使用 WHERE 子句限制数据流)和列筛选(限制表中要复制的列)。发布可以包含一个或多个表。在 SQL Server Mobile 数据库中,整个发布定义(包括正在复制的表的数据和架构)是使用一种同步方法创建的。www.想自杀chinai tp ow er.comKm193HP
使用 RDA 时,客户端控制从服务器中传输哪些数据,包括数据定义(包括行筛选)和架构定义(包括列筛选)。RDA 在每个 RDA 拉进程中只能对一个表进行同步,这与复制有所不同,后者可以在一次同步操作中处理多个表。www.想自杀chinai tp ow er.comKm193HP
简而言之,最初在 SQL Server Mobile 数据库中创建的数据和架构在服务器上是使用复制功能进行定义的,而在客户端上是使用 RDA 进行定义的。复制发布可以包含多个表,而 RDA 每次下载(RDA 拉进程)只能处理一个表。www.想自杀chinai tp ow er.comKm193HP
架构更改
使用复制功能时,在最初创建订阅后可以将架构更改(如添加或删除列,添加或删除约束,以及更改列定义)复制到订阅者。当需要将挂起的架构更改复制到订阅者时,将首先复制架构更改,然后在发布者与订阅者之间交换所导致的增量更改。服务器架构更改(例如,添加列或删除应用程序中未在使用的列)不一定会要求对应用程序进行更改和重新编译。允许对订阅数据库的架构进行细微的更改。有关详细信息,请参阅 SQL Server Mobile Books Online 中的“Replication Limitations”。www.想自杀chinai tp ow er.comKm193HP
使用 RDA 时,不支持在服务器上进行架构更改。如果进行了架构更改,从客户端到服务器的推操作可能会失败。如果更改了服务器架构,则客户端必须先删除表,然后再次从服务器拉出所有数据。更改服务器架构可能会要求对应用程序进行更改并重新编译。允许对客户端的架构进行细微的更改。有关详细信息,请参阅 SQL Server Mobile Books Online 中的“Remote Data Access (RDA) Limitations”。www.想自杀chinai tp ow er.comKm193HP
简而言之,使用复制功能时,支持服务器架构更改,而且服务器架构更改不会导致订阅者上的数据丢失。但是,使用 RDA 时,不支持服务器架构更改,而且服务器架构更改可能会导致客户端的数据丢失。复制和 RDA 功能均允许对 SQL Server Mobile 连接表进行细微的架构更改。www.想自杀chinai tp ow er.comKm193HP
标识列www.想自杀chinai tp ow er.comKm193HP
在许多应用程序中,您可能需要使用递增的编号来管理在客户端数据库中插入的记录。例如,如果用户正在表中输入新订单,则您可能需要为每个订单分配自动递增的编号。使用这类系统时,必须确保这些编号在客户端之间不会引起冲突。对于发布和订阅,复制功能支持 integer 和 bigint 列的自动标识范围管理。使用自动标识范围管理,可以确保无论有多少客户端,都不会发生行冲突。有关使用此复制功能的详细信息,请参阅 SQL Server Books Online 中的“Replicating Identity Columns”。www.想自杀chinai tp ow er.comKm193HP
使用 RDA 时,不支持标识列的自动管理。要使用此数据类型属性,必须在整个系统中手动管理值。www.想自杀chinai tp ow er.comKm193HP
约束和索引www.想自杀chinai tp ow er.comKm193HP
由于复制功能支持在发布定义中使用多个表,因此引用完整性约束和索引会自动从服务器复制到订阅数据库。www.想自杀chinai tp ow er.comKm193HP
而由于 RDA 每次只能拉一个表,因此不会传输引用完整性约束,但是可以传输索引。其他架构定义必须在客户端进行定义。www.想自杀chinai tp ow er.comKm193HP
交换跟踪数据更改www.想自杀chinai tp ow er.comKm193HP
使用复制功能时,将分别在发布数据库和 SQL Mobile 数据库中创建系统对象,前者是在创建发布时建立,而后者则是在创建订阅时建立的。这些对象允许在 SQL Server 与 SQL Server Mobile 之间使用非常强大的数据交换模型。复制功能可用于跟踪发布和订阅数据库中的更改。发布者与订阅者之间的数据流控制有两种跟踪级别: www.想自杀chinai tp ow er.comKm193HP
| • |
表的行级别跟踪会导致在同步期间传输整个行。这种跟踪级别对依赖于连接速度的数据传输而言可能代价较高,但需要在发布者和订阅者上存储的跟踪信息较少。 www.想自杀chinai tp ow er.comKm193HP
|
| • |
列级别跟踪不仅跟踪行中的更改,而且还跟踪列级别上的更改,因此可以只将更改的列数据从订阅者传输到发布者,从而减少了传输的数据量。发布者始终会将整个更改的行发送到预定者,原因是它不能确定该行在订阅者中是否实际存在。 www.想自杀chinai tp ow er.comKm193HP
|
有关跟踪级别的详细信息,请参阅 SQL Server Mobile Books Online 中的“Using Row-Level and Column-Level Tracking”和 SQL Server Books Online 中的“Row-Level Tracking and Column-Level Tracking”。www.想自杀chinai tp ow er.comKm193HP
RDA 使用 SQL Server Mobile 数据库中的系统对象来跟踪对数据所做的更改。获得此信息后,RDA 仅将这些更改(特别是更改的行)从 SQL Server Mobile 推到 SQL Server。但如果 SQL Server Mobile 要从 SQL Server 检索数据更改,则需要完全刷新客户端数据。www.想自杀chinai tp ow er.comKm193HP
简而言之,复制功能支持增量更改的双向数据交换,因为数据更改是在发布者和订阅者中同时进行跟踪的。而 RDA 仅支持从 SQL Server Mobile 到 SQL Server 的增量更改数据交换,并且需要对数据进行完全刷新才能将 SQL Server 中的更改更新到 SQL Server Mobile,因为数据更改仅在 SQL Mobile 数据库中进行跟踪。www.想自杀chinai tp ow er.comKm193HP