SQL Server Compact Edition 与SQL Server 2005数据同步之请求和推送

本文介绍如何使用远程数据访问(RDA)实现SQL Server Compact Edition与SQL Server 2005之间的数据同步。包括配置Web同步、创建测试数据库及示例程序,并解决常见问题。

SQL Server Compact Edition SQL Server 2005数据同步之 请求和推送

一、             前言

       相信有Windows CE Windows Mobile 开发经验的人员都或多或少要对移动终端的数据进行推送至SQL Server或是向SQL Server请求数据。但是用什么方法进行呢?相信大家立即会想到Microsoft ActiveSync,这也是个不错的选择,但这个方法只是针对文件的CopyPasteDelete等操作,还是有一定的局限性。另外大家也会想到经TCP/IP通过SocketWeb Service等进行数据同步,直接向SQL Server请求和推送数据,但是这个难度就在于SocketWeb Service的开发了。本文将介绍通过“RDA(远程数据访问)”方法,给大家参考,只要少少代码和设置便可以轻松实现了。

二、             创建快照文件夹

1           打开资源管理器中,在C盘下创建一个名为snapshot的新文件夹。右键单击snapshot文件夹,然后选择共享和安全

2           共享选项卡,选择共享该文件夹,然后单击权限

3           共享权限页中,单击添加

4           单击高级,单击立即查找,选择登陆用户名,单击确定

5           snapshot的权限中,为刚才分配的用户选中更改读取权限,然后单击确定

6           选择安全选项卡,单击添加,添加刚才的用户到用户列表中。

7           选择用户,分配以下权限:

-          读取和执行

-          列出文件夹目录

-          读取

-          写入

8           单击确定关闭快照属性窗口。

9           关闭 Windows 资源管理器。

注:如果你的电脑启用了简单文件夹共享,请选择工具,单击文件夹选项,在查看选项页中去除简单文件夹共享。这样才看到第2步以下的内容。

 

三、             配置SQL Server CompactWeb同步。

       如果你的PC上没有安装Microsoft SQL Server 2005 Compact Edition Server Tools,请到http://www.microsoft.com/downloads/details.aspx?FamilyId=4E45F676-E69A-4F7F-A016-C1585ACF4310&displaylang=zh-cn 进行下载。

1           单击开始->所有程序-> Microsoft SQL Server 2005 Compact Edition->配置 Web 同步向导

2           欢迎使用配置 Web 同步向导页上,单击下一步

3           订阅服务器类型页上,选择SQL Server Compact Edition,单击下一步

4           Web 服务器页中,选择创建新的虚拟目录,然后选择默认网站。单击下一步。剩余的步骤用于创建新的虚拟目录。

5           虚拟目录信息页上,在别名文本框中,输入虚拟目录名称。在路径文本框中设置虚拟目录的本地文件路径(可默认),然后单击下一步

6           安全通信页上,默认选择不需要使用安全通道(SSL)。用户将通过以 http:// 开头的 URL 字符串访问您的虚拟目录,然后单击下一步

7           客户端身份验证页上,选择将对客户端进行身份验证。要求输入用户名和密码,然后单击下一步

8           需经身份验证的访问页上,选择要使用的身份验证类型,这里选择集成 Windows 身份验证。然后单击下一步

9           目录访问页上,添加登陆用户权限,然后单击下一步

10       快照共享访问页上,选择每第一步中的快照,然后单击下一步

11       单击完成,完成创建并配置虚拟目录后,单击关闭 注:你的PC机上必需安装有IIS

四、             建立测试数据库

1           打开SQL Server Management Studio,新建查询,输入以下内容:

USE master;

GO

IF EXISTS (SELECT * FROM sys.sysdatabases WHERE name = 'SQLMobile')

BEGIN

    DROP Database SQLMobile;

END

GO

CREATE DATABASE SQLMobile;

GO

USE SQLMobile;

GO

CREATE TABLE Test (ID INTEGER IDENTITY (1,1)

CONSTRAINT pkID PRIMARY KEY, Test NVarChar (50));

GO

insert into Test (Test) values('Test1')

insert into Test (Test) values('Test2')

GO

打开Windows CE Query Analyzer 在路径/Program Files/SQLMobile下建立命名为sqlmobile的测试数据库。

 

五、             建立示例程序

1           打开Microsoft Visual Studio 2005,建立Windows CEDevice Application应用程序,命名为SQLMobile

2           删除菜单,添加两个button,并命名为Push(推送)和Pull(请示),闰添加单击事件。

3           在程序中添加System.Data.SqlServerCe的引用,并Using到程序中。

4           Push的单击事件中添加以下代码:

string ConnectString = @"Provider=SQLOLEDB; Data Source=***; Initial Catalog=SQLMobile; User ID=sa;Password = ***";

SqlCeRemoteDataAccess rda = null;

try

{

rda = new SqlCeRemoteDataAccess(@"http://192.168.1.3/SQLMobile/sqlcesa30.dll", @"Data Source=/Program Files/sqlmobile/test.sdf");

rda.InternetLogin = "***";

rda.InternetPassword = "***";

rda.Push("Test", ConnectString, RdaBatchOption.BatchingOff);

MessageBox.Show("Push OK.");

}

catch (SqlCeException ex)

{

MessageBox.Show(ex.Message);

}

finally

{

rda.Dispose();

}

5           Pull的单击事件中添加以下代码:

string ConnectString = @"Provider=SQLOLEDB; Data Source=***; Initial Catalog=SQLMobile; User ID=sa;Password = ***";

SqlCeRemoteDataAccess rda = null;

try

{

rda = new SqlCeRemoteDataAccess(

@"http://192.168.1.3/SQLMobile/sqlcesa30.dll",

"***",

"***",

@"Data Source=/Program Files/sqlmobile/test.sdf ");

rda.Pull("Table_1", "SELECT * FROM Table_1", ConnectString,

RdaTrackOption.TrackingOnWithIndexes);

MessageBox.Show("Pull OK.");

}

catch (SqlCeException ex)

{

MessageBox.Show(ex.Message);

}

finally

{

rda.Dispose();

}

6           将程序下载到移动终端机上,进行测试。

六、             测试

              打开SQLMobile程序,点击Pull,出现MessageBoxPull OK.”即已经将表Test请求到了本地sqlmobile.sdf数据库中。

sqlmobile.sdf,添加两行数据后,点击Push,出现MessageBoxPusk OK.”,即已经将新增的两行数据添加到了SQL ServerTest表中。

七、             问题汇总

1          A request to send data to the computer running IIS has failedFor more information, see HRESULT.

些问题请查看你的IIS配置,用户名或密码。

 

2          Failure to Open SQL Server with given connect string, […..]

       此问题请查看你的防火墙设置和你的SQL Server用户名和密码。

3          The Local Table Name parameter is already specified. [Table name = Test]

       此问题是因为windows CE中已经存在名为Test的表,将此表删除即可。

4          SQL Mobile encountered problems when opening the database.

       此问题是你的sqlmobile.sdf 数据库密码错误,如果有密码请更改连接字符串为:Data Source=/Program Files/SQLMobile/sqlmobile.sdf;Password=**

 

需要source的朋友请电邮至niyingny@hotmail.com

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值