Sql Server 2005 与Sql Server Mobile(Sql server 2005 mobile Edition)数据同步步骤以及问题解决方案

  目前很多软件厂商针对移动设备的数据库同步解决方案,这些方案主要分为两种:第一种,是针对某种特定数据库提供的数据同步方案,比如SQL SeverRDAReplicationOracle LiteSybase SQL Anywhere等;第二种是ISV开发的针对不同数据库的数据同步方案。

SQL Mobile支持两种数据同步的方法:Remote data accessRDA)和Replication。这两种方法都支持从远程的SQL Server服务器中下载数据到设备端的SQL Mobile数据库中,在本地对数据进行浏览和修改,再将修改结果更新到SQL Server服务器中。

RDAReplication都需要配置SQL Mobile Server Tools,也就是说,必须要有一个运行IISWeb ServerServer Tools的主要作用是将移动设备通过网络发送的数据库访问请求,转发给SQL Server数据库,并将结果集发送回移动设备中。根据智能设备应用程序的用途、功能、规模和要求来决定在 Microsoft SQL Server 2005 Mobile Edition (SQL Server Mobile) 应用程序中使用远程数据访问 (RDA) 还是使用复制。每个连接数据解决方案都有不同的优点和缺点。

 

                        RDA架构

    运行于设备上的 Microsoft SQL Server 2005 Mobile Edition (SQL Server Mobile) 应用程序可以使用远程数据访问 (RDA)

  • 下载数据。应用程序可以将数据从 SQL Server 中的数据库请求到 SQL Server Mobile 中的数据库。例如,应用程序可能将公司员工目录、产品价格列表或产品目录下载到设备上。
  • 捕获和上载数据。应用程序可以捕获源自用户输入的表单、全球定位系统、条形码读取器或类似装置的数据。应用程序可以将捕获的数据存储在设备上的 SQL Server Mobile 数据库中。应用程序可以定期将捕获的数据从 SQL Server Mobile 数据库推送到 SQL Server 数据库。
  • 下载、更新和上载数据。应用程序可以将数据从 SQL Server 数据库请求到 SQL Server Mobile 数据库。然后,应用程序可以更新 SQL Server Mobile 数据库。应用程序可以定期将更改后的数据从 SQL Server Mobile 数据库推送到 SQL Server 数据库。
  • 提交 SQL 语句。应用程序可以提交要在远程 SQL Server 数据库上执行的 SQL 语句。如果设备始终与网络连接,此功能特别有用。

应用程序可以组合使用这些技术。例如,销售支持应用程序可能将价格列表下载到设备上,并在设备上捕获和上载新的订单。应用程序还可以直接将 SQL 语句提交到 SQL Server 数据库。

 

远程数据访问 (RDA) 使用 Microsoft SQL Server 2005 Mobile Edition (SQL Server Mobile) 的三个组件:SQL Server Mobile 数据库引擎、SQL Server Mobile 客户端代理和 SQL Server Mobile 服务器代理。

RDA 使用 Microsoft Internet 信息服务 (IIS) 作为服务器上 SQL Server 数据库和设备上 SQL Server Mobile 数据库之间的通信机制。SQL Server Mobile 数据库引擎、SQL Server Mobile 客户端代理和 SQL Server Mobile 服务器代理协同工作才可以完成 RDA,如下面的关系图所示。

 

 

                     二、  复制的架构

Microsoft SQL Server 2005 Mobile Edition (SQL Server Mobile) 中,复制使用下列组件:

  • SQL Server Mobile 数据库引擎 
  • SQL Server Mobile 客户端代理
  • SQL Server Mobile 服务器代理
  • SQL Server Mobile 复制提供程序

 

SQL Server Mobile 数据库引擎

SQL Server Mobile 数据库引擎 可管理设备上的本地数据库。对于订阅数据库,SQL Server Mobile 数据库引擎 可通过维护每条记录的更改跟踪信息,跟踪所有插入、更新或删除的数据库记录。

SQL Server Mobile 客户端代理

SQL Server Mobile 客户端代理是设备上主要的 SQL Server Mobile 复制组件。SQL Server Mobile 客户端代理可实现 SQL Server Mobile Replication 对象接口。应用程序可调用此接口,通过编程方式控制复制。

SQL Server Mobile 服务器代理

SQL Server Mobile 服务器代理是负责管理 SQL Server SQL Server Mobile 之间通信的组件。SQL Server Mobile 服务器代理位于运行 Microsoft Internet 信息服务 (IIS) 的服务器上,可以处理从 SQL Server Mobile 客户端代理发出的所有 HTTP 请求。

SQL Server 协调器和 SQL Server Mobile 复制提供程序

在执行同步时,SQL Server 协调器将调用 SQL Server Mobile 复制提供程序。SQL Server 协调器和 SQL Server Mobile 复制提供程序都位于运行 IIS 的服务器上,该服务器上还安装有 SQL Server Mobile 服务器工具。在启动 SQL

 

 

                    三、  RDA和复制的比较

RDA 和复制都适用于无线传输。使用压缩可减小传输的数据量。在传输期间可以使用加密来保护敏感的用户数据。

功能

复制

RDA

交换所跟踪的数据更改

在服务器和客户端之间复制更改

列级跟踪通过仅传输更改的列数据,减少数据传输量

行级跟踪传输整行

仅从客户端到服务器推送更改。完成接收服务器更改所需的客户端数据的更新。

行级跟踪传输整行

可以从其传播数据的表的数量

多个表与在发布中定义的一样多

每个 RDA 方法对应一个表。

可以传播的表的类型

控制数据流的不同类型的表

在发布(服务器)中添加或删除表是自动复制的,而无须在客户端上重新初始化订阅

不适用

在服务器上添加或删除表不会自动复制到客户端。

约束和索引

引用完整性约束和索引是从服务器自动复制的。

不会复制引用完整性约束,可以选择复制索引。其他架构定义必须在客户端上定义。

冲突

冲突包括由不同用户更改的数据 和因错误而未应用的行。

在服务器上解决和管理冲突

支持内置和自定义冲突解决程序。

冲突仅包括因错误而未应用的行。RDA 不检测数据是否已由其他用户更改。

不管理冲突,但可以选择在客户端上的错误表中进行报告。

无冲突解决程序。

架构更改

可以复制架构更改(如添加/删除列、添加/删除约束或更改列定义)。

不允许进行架构更改。如果架构已更改,则客户端必须删除客户端上的表,并再次从服务器请求所有数据。根据架构更改的不同,推送可能会失败。

标识列

手动和自动处理标识范围。支持 BigInt Int 列。

手动处理标识范围。支持 BigInt Int 列。

数据/架构定义

配置发布时在服务器上进行;创建订阅时在客户端上自动对其进行定义。

将数据从服务器请求到客户端时,在客户端上进行数据和架构定义。

工具 (UI)

支持用于创建和管理订阅的大量工具,以及用于管理多个订阅、观察性能和同步时间的监视工具

不支持任何工具。

服务器入侵

将表和列添加到服务器数据库以管理复制。

不对服务器上的数据库进行更改。

 

                  mobile数据同步的配置

 

大家也可以参考 Sql server 2005 book online ,但是有些东西,觉得它写的不是很清楚。

 

 

我们需要一下五步来完成我们的数据同步,当然了机器上必须要安装上开发环境。开发环境的具体配置我们等下再说。

1、创建 sql server 2005的数据库发布。

2、配置该发布的web同步(也就是配置IIS

3、创建订阅(于创建发布对应)

4、创建应用程序

5、部署发布并测试

预备工作:

软件要求如下:

1.    xp系统

2.    IIS5.0以上)默认安装的系统是没有安装IIS

   安装步骤:
(1)
、插入windows xp安装光盘,打开控制面板,然后打开其中的添加/删除程序
(2)
、在添加或删除程序窗口左边点击添加/删除Windows组建

(3)
、捎带片刻系统会启动Windows组建向导,在Internet信息服务(IIS)前面选勾,点击下一步:

(4)、系统安装成功,系统会自动在系统盘新建网站目录,默认目录为:C:/Inetpub/wwwroot

3.SQL Server 2005XP不能用SQL Server 服务器版,要用开发版或个人版,开发版功能和服务器版差不多,下载地址如下:http://www.downsite.cn/rj/cs_sql_2005_dev_all_dvd.rar

推荐完全安装,注意要把客户端组件安装上。

 

创建数据库并在其中填充数据

(1)    打开 SQL Server Management Studio

(2)             当提示您连接服务器时,请在服务器名称中键入 (local),然后单击连接

(3)             打开一个新查询窗口。创建一个 SQLMobile 数据库,并在该数据库中填充数据。

   USE master;

GO

DROP Database SQLMobile;

GO

CREATE DATABASE SQLMobile;

GO

USE SQLMobile;

GO

CREATE TABLE MembershipData (MemberID INTEGER IDENTITY (1,1) CONSTRAINT pkMemberID PRIMARY KEY, MemberName NVarChar (50));

CREATE TABLE FlightData (MemberID INTEGER FOREIGN KEY REFERENCES MembershipData(MemberID), Destination NVarChar (50), FlightStatus NVarChar(50), ArrivalDate DATETIME, FlownMiles INTEGER);

INSERT INTO MembershipData (MemberName) VALUES ('Mr Don Hall');

INSERT INTO MembershipData (MemberName) VALUES ('Mr Jon Morris');

INSERT INTO MembershipData (MemberName) VALUES ('Ms TiAnna Jones');

INSERT INTO FlightData (MemberID, Destination, FlightStatus, ArrivalDate, FlownMiles) VALUES (1, 'Seattle', 'Flight Delayed 1 hour', '8/25/00', '20000');

INSERT INTO FlightData (MemberID, Destination, FlightStatus, ArrivalDate, FlownMiles) VALUES (2, 'London', 'Flight on time', '9/12/00', '15000');

INSERT INTO FlightData (MemberID, Destination, FlightStatus, ArrivalDate, FlownMiles) VALUES (3, 'Sydney', 'Flight Gate Closing', '11/5/00', '30000');

INSERT INTO FlightData (MemberID, Destination, FlightStatus, ArrivalDate, FlownMiles) VALUES (1, 'Tokyo', 'Delayed Fog', '5/25/00', '25000');

INSERT INTO FlightData (MemberID, Destination, FlightStatus, ArrivalDate, FlownMiles) VALUES (2, 'Minneapolis', 'Flight on time', '5/1/00', '1000');

INSERT INTO FlightData (MemberID, Destination, FlightStatus, ArrivalDate, FlownMiles) VALUES (3, 'Memphis', 'Flight Gate Closing', '1/5/00', '1000');

(4)             单击执行(!)”运行该脚本并创建数据库。

注意:

您还可以按 F5,或者从查询菜单中选择执行来运行该查询。

此时,将运行该脚本,创建一个名为 SQLMobile 的新数据库。

 

现在我们开始我们的数据同步工作

1,             Sql Server Agent  创建一个用户。

(1)、在开始菜单上,右键单击我的电脑,然后选择控制面板”-〉“管理工具”

(2)、在计算机管理中,展开系统工具,展开本地用户和组,右键单击用户,然后选择新用户

(3)、在新用户对话框中,键入以下信息,然后单击创建,在这里我们用"SnycTest"帐户,设置密码"admin",,隶属于administrators,并只设置密码永不过期的属性。

 

2、创建快照文件夹。

在盘符中创建新的文件夹,并为它赋予相应的权限。

创建办法:我的电脑→C:→新建文件夹→命名为"snapshot"→右键→共享和安全→共享→共享此文件→权限→添加→高级→立即查找→选择SnycTest→确定→并付给权限:更改和读取。安全选项卡→如同上面添加SnycTest用户→并设置权限为一下四个:读取和运行,列出文件夹目录,读取,写入。  (如果电脑的文件夹没有设置用户权限的选项,工具->文件夹选项->查看->去掉"简单文件共享"前的钩就行了;NTFS才有安全选项)

 

至此我们的准备工作就可以了。

 

3,创建发布。

具体方法:

(1)、在对象资源管理器中,展开“(本地)”节点(如果当前尚未展开),然后展开复制

(2)、右键单击发布文件夹,然后选择新建发布

(3)、在新建发布向导简介屏幕上,单击下一步

1.               如果以前未曾在此计算机上创建发布,将提示您配置分发服务器。选择第一个选项将本地计算机作为它自己的分发服务器,然后单击下一步

2.               如果以前未曾在此计算机上创建发布,将提示您指定快照文件夹。键入在前面过程中创建的快照文件夹的共享路径。以 //servername/share 格式键入共享路径,不要键入本地路径。在此演练中,我们建议您键入 //computer/snapshot(其中 computer 是您计算机的名称),然后单击下一步

3.               在数据库列表中,选择SQLMobile,然后单击下一步

在发布类型列表中,选择合并发布,然后单击下一步 下一步我们选择要发布的数据库SQLMobile,→发布类型,在这里有个四个发布类型

快照发布:

发布服务器按预定的时间间隔向订阅服务器发送已发布数据的快照。

事务性发布:

在订阅服务器收到已发布数据的初始快照后,发布服务器将事务流式传输到订阅服务器。

具有可更新订阅的事务性发布:

SQL Server 订阅服务器收到已发布数据的初始快照后,发布服务器将事务流式传输到订阅服务器。来自订阅服务器的事务被应用于发布服务器。

合并发布:

在订阅服务器收到已发布数据的初始快照后,发布服务器和订阅服务器可以独立更新已发布数据。更改会定期合并。Microsoft SQL Server Mobile

Edition 只能订阅合并发布。

4.               订阅服务器类型页中,选择启用对 SQL Server Mobile 订阅服务器的支持,然后单击下一步

5.               在要发布的对象列表中,选中复选框。如果展开,您将发现 SQLMobile 数据库中的两个表都已被选中。单击下一步

6.               会通知您将向表中添加唯一标识符。所有合并项目都需要一个 uniqueindentifier 列。单击下一步

7.               筛选表行页中,现在即可添加对已发布数据的筛选器。对于此演练,您将无需筛选数据。单击下一步

8.               快照代理页中,您可以配置创建快照的时间以及快照代理运行的频率。单击下一步以接受默认设置。

9.               代理安全性对话框中,单击安全设置

   在“快照代理安全性”对话框中,输入前面过程中所创建帐户的登录信息。进程帐户为 computer_name/SnycTest(其中 computer_name

  是您计算机的名称),密码为 admin

  单击“确定”以保存设置。

a.                         单击确定以保存设置。

b.                        代理安全性页中,单击下一步

10.          向导操作屏幕上,您可以确定创建发布的时间以及是否希望创建脚本文件。单击下一步以接受默认选择。

11.          完成该向导屏幕上,键入 SQLMobile 作为发布的名称,然后单击完成

12.          将创建发布。向导完成后,单击关闭

 

4设置权限

您必须为快照代理帐户和 IIS 匿名用户帐户授予权限。还必须将 IIS 匿名用户帐户添加到发布访问列表 (PAL) 中。

 4.1设置数据库权限

1.     在 的对象资源管理器中,展开安全性,右键单击登录名,然后选择新建登录名

2.     新建登录名对话框中,选择“Windows 身份验证,单击搜索,在输入要选择的对象名称框中键入 computername/SnycTest(其中 computername 为您的计算机名称),单击检查名称,然后单击确定

3.     在导航窗格中,选择用户映射窗格。

4.     在数据库列表中,选择“distribution”“db_owner”角色,选择“SQLMobile”“db_owner”角色,然后单击确定

5.     右键单击登录名,然后选择新建登录名

6.     新建登录名对话框中,选择“Windows 身份验证,单击搜索,在输入要选择的对象名称框中键入 computername/iusr_computername(其中 computername 为您的计算机名称),单击检查名称,然后单击确定

7.     在导航窗格中,选择用户映射窗格。

8.     在数据库列表中,选择“distribution”“SQLMobile”,然后单击确定

 

4.2 授予发布权限

1.     在对象资源管理器中,展开复制,展开发布,右键单击“[SQLMobile]:SQLMobile”发布,然后单击属性

2.     在导航窗格中,选择发布访问列表

3.     单击添加。在添加发布访问项对话框中,列出了 IUSR 帐户。选择该帐户,然后单击确定

4.     请确保 IUSR 帐户当前位于 PAL 中,然后单击确定

创建发布快照

只有在创建发布快照之后才可对 SQLMobile 发布的订阅进行初始化。

 创建发布快照

  1. SQL Server Management Studio 的对象资源管理器中,展开“(本地)”计算机节点。
  2. 展开本地发布文件夹,选择发布名称,右键单击“SQLMobile”,然后单击查看快照代理状态
  3. 查看快照代理状态对话框中,单击启动

在进行下一操作之前,请确保已成功完成快照作业。

 

 

5、配置 Web 同步

既然 SQL Server 已经配置了发布,您必须使该发布可以被 SQL Server Mobile 客户端通过网络进行访问。SQL Server Mobile 通过 IIS 连接到 SQL Server。特别是,您可以创建并配置一个虚拟目录,以允许客户端访问 SQL Server Mobile 服务器代理。

5.1安装 SQL Server Mobile 服务器组件

1.               Windows 资源管理器中,导航到以下目录:

C:/Program Files/Microsoft SQL Server/90/Tools/Binn/VSShell/Common7/IDE(如果装在D盘,可能在D:/Program Files/Microsoft SQL

Server/90/Tools/Binn/VSShell/Common7/IDE

2.               双击 sqlce30setupen.msi 运行安装程序。

3.               安装向导的简介屏幕上,单击下一步

4.               阅读并接受 EULA 条款,然后单击下一步

5.               系统配置检查屏幕上,确保所有项都通过检查。如果尚未安装 SQL Server 2000,将列出该列表的最后一项作为警告。因为您正在使用 SQL Server 2005,这并不是问题。单击下一步

6.               在接下来的屏幕上,单击下一步,然后单击安装开始安装。

7.               单击“Finish”

 

5.2发布以进行 Web 同步

1.               SQL Server Management Studio 的对象资源管理器中,展开“(本地)”计算机节点。

2.               右键单击复制文件夹,然后选择配置 Web 同步

3.               在该向导的简介屏幕上,单击下一步

4.               订阅服务器类型屏幕上,选择“SQL Server Mobile Edition”,然后单击下一步

5.               “Web 服务器屏幕的运行 IIS 的计算机文本框中,键入您计算机的名称(如果尚未提供),然后单击创建新的虚拟目录

6.               在显示的树中,展开该计算机,展开网站,然后选择默认网站

7.               单击下一步

8.               虚拟目录信息屏幕上的别名文本框中,键入 SQLMobile,然后单击下一步

9.               客户端身份验证屏幕上,选择客户端将以匿名方式进行连接,然后单击下一步

10.          匿名访问屏幕上,单击下一步接受默认设置。

11.          快照共享访问屏幕上,键入 //computer/snapshot(其中 computer 是您计算机的名称),然后单击下一步

如果收到快照共享为空的警告,请单击

12.          单击“Finish”

13.          单击关闭

 

5.3 SQL Server Mobile 任务

在部署将要使用 SQL Server Mobile 的应用程序之前,预先创建 SQL Server Mobile 数据库和订阅通常会节省时间。SQL Server Management Studio 允许您在本地计算机上创建并使用 SQL Server Mobile 数据库。然后,您可以在开发应用程序时使用此数据库。

创建新的 SQL Server Mobile 数据库

1.               SQL Server Management Studio 的对象资源管理器中,单击连接,然后选择“SQL Server Mobile”

2.               数据库文件字段中,选择“<新建数据库…>”

3.               在文件名文本框中,键入 c:/sqlmobile.sdf,然后单击确定

4.               连接到服务器对话框中,单击连接

将在对象资源管理器中添加名为“SQL Server Mobile [My Computer/.../sqlmobile]”的新节点。

 

6.创建新的订阅

1.               在对象资源管理器中,展开“SQL Server Mobile”节点,展开复制,右键单击订阅,然后选择新建订阅

2.               在简介屏幕上,单击下一步

3.               选择发布屏幕的发布服务器下拉列表中,选择“<查找 SQL Server 发布服务器…>”

4.               连接到服务器对话框,键入或选择本地计算机,然后单击连接

5.               选择发布屏幕的发布列表中,展开SQLMobile,选择SQLMobile发布,然后单击下一步

6.               标识订阅屏幕上,为订阅名称键入 SQLMobile,然后单击下一步

7.               “Web 服务器身份验证屏幕上,键入前面过程中创建的虚拟目录的 URL。在此演练中,您已经创建了 URL http://localhost/SQLMobile 的虚拟目录。

8.               单击订阅服务器将以匿名方式进行连接,然后单击下一步

9.               “SQL Server 身份验证屏幕上,单击下一步接受默认设置。

在最终屏幕上,该向导将显示示例代码,您可以在应用程序中创建订阅时使用该代码。选择示例代码(Visual Basic C#,取决于您在创建应用程序时使用的语言),然后复制代码。若要执行复制操作,请选择该代码并按 Ctrl+C。启动记事本或其他文本编辑器,然后粘贴示例代码。在使用下列步骤创建应用程序时,您将使用此代码。

10.          在复制示例代码之后,单击完成

11.          单击关闭

你可能感兴趣的:(mobile,mobile)