Chinaunix首页 | 论坛 | 博客
  • 博客访问: 488839
  • 博文数量: 164
  • 博客积分: 4024
  • 博客等级: 上校
  • 技术积分: 1580
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-10 16:27
文章分类

全部博文(164)

文章存档

2011年(1)

2010年(108)

2009年(55)

我的朋友

分类: 嵌入式

2010-04-23 15:26:10

Sql Server Mobile分为设备端和服务器端两个部分。其中设备端的安装,需要将CAB文件复制到设备上进行安装,而服务器端则使用msi在开发机? AB文件,它们位于C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\SQL Server\Mobile\v3.0\\。

 

 
安装要求  
  1. SQL   Server   CE中Server   Tools的安装环境  
  Server   Tools需要安装在Windows   2000   SP2以上的操作系统上,需要安装IIS,并且能访问SQL   Server数据库。  
  2. SQL   Server   CE中Developer   Tools   的安装环境  
  Developer   Tools的安装环境与Server   Tools相同,但需要安装有EVT3.0、EVC4.0或.net开发环境。  
  3. SQL   Server   CE中实际设备的安装环境  
  SQL   Server   CE需要安装在以Windows   CE   3.0或Windows   CE.net平台上。  
   
  安装过程  
  1.Server   Tools的安装:  
  执行SQL   Server   CE的安装程序,在向导中选择Server   Tools,按安装向导进行安装。安装完成后,将提示是否建立虚拟目录,可以按向导提示进行虚拟目录的建立,也可以在IIS中配置虚拟目录。我们可以建立一个名为sqlce的虚拟目录,并指向D:\Program   Files\Microsoft   SQL   Server   CE   2.0\Server\目录(假设SQL   Server   CE安装在D盘)。  
  安装完成后,在IE中访问(假设本机IP地址为192.168.0.15),IE中显示“SQL   Server   CE   Server   Agent”则说明Server   Tools安装成功。  
  2.Developer   Tools   的安装  
  执行SQL   Server   CE的安装程序,在向导中选择Developer   Tools,按安装向导进行安装。安装完成后将不会在系统菜单中增加项目。但会在EVT的组件选项中增加SQL   Server   CE2.0的组件。  
  3.实际设备中的组件安装  
  在实际设备中,需要安装SQL   Server   CE组件:Ssce20.dll、Ssceca20.dll、Ssceerror20en.dll,这三个文件可以在D:\PROGRAM   FILES\Microsoft   SQL   Server   CE   2.0\Device下选择不同CPU类型的文件,还需要安装ADOCE组件:Msdaeren.dll、Adoce31.dll、Adoceoledb31.dll、Adoxce31.dll,这些文件可以在安装ADOCE组件的相应目录中的target目录下选择相应的CPU类型文件。最后上传D:\PROGRAM   FILES\Microsoft   SQL   Server   CE   2.0\Device下的dllregister.exe和isqlw20.exe。dllregister.exe负责将文件注册到设备中。如果在实际设备中,执行isqlw20.exe成功,则说明安装成功。 
 
  
 
 
 
说起SqlCe的安装,说起来我有点不好意思的。为何呢?自从我从刚学使用.NET Companct Framework开始,就接触到SqlCe的了,当时存在着两个难题。一个是SqlCe的安装,一个就是程序的打包。当然我今天只说一下我SqlCe的安装咯。
       其实也没啥,SqlCe的安装很简单的。因为SqlCe的安装包是安装一个Agent,这个Agent用来建立SQL Server与设备上的SqlCe通信的一个Server Agent,如下图(摘自SqlCE Book Online)

       原则上安装的是一个叫做Server Ce Server Agent的管理平台。这个平台提供一个从SQL Server到设备SqlCe的一个HTTP连接。用于数据交互。
       先简要介绍一下里面的Point:
1SQL Server CE 数据库引擎(Database Engine  
      SQL CE数据库引擎管理存储着在基于Windows CE设备上的SQL Server数据,在发生少量数据记录的变化时,此数据库引擎可以通过插入、更新、删除来保持数据库的一致性,可以通过使用两种连接方案来使数据同步功能得以实现。
2SQL Server CE客户代理端   
      SQL Server CE客户代理端是设备上用于连接的基本组件,维持着下列几个对象:复制对象,远程数据访问(RDA)对象和引擎对象。通过使用这些对象,程序可以编程控制这些SQL Server连接。
3SQL Server CE服务器代理端
      SQL Server CE服务器代理端负责处理客户代理端发出的HTTP请求。程序发出请求后,客户代理端通过HTTP发送这些请求到服务器代理端,服务器代理端连接到SQL Server,并通过HTTP发送结果集到客户代理端。在上图没有显示的附加组件同样包含在此处理过程中,这些组件运行在运行IIS的机器上。
     合并复制与(RDA)使用不同的方法处理HTTP请求,同时也在运行IIS的机器上使用不同的SQL Server连接组件。
     我是个Web盲,所以有些概念并不是很熟悉,比如说虚拟目录、快照、HTTP传输等。
     赶快回到本文的正题,安装SqlCe的第一步是安装这个Server Agent。而这个Agent的安装取决于其版本要与SqlServer的版本对应,比如你的SqlServer2000版本是SP3,那么你必须使用SqlCeSP3这个版本,SqlServer2000的版本是SP4的,那你就必须使用SqlCeSP4的这个版本;需要说明的是所谓的SqlServer2000的SP3、SP4是通过打补丁完成的,关于这个SP3、SP4的补丁在MSDN网站上有下;而且这个补丁的安装有两部分,如SqlServer2000的SP4,安装程序会先解压安装文件到本地目录里面,然后找到这个本地目录SQL2KSP4,运行里面的一个批处理文件setup.bat,再就是根据安装步骤继续就可以了。哦,对了,还必须有个前提是,你已经安装了IIS。因为SqlCe与SqlServer的传输的通过HTTP来进行传输的,现在你知道安装IIS的重要性了吧。       
     一般情况下,安装完SqlCe后会直接进入SQL Server CE Connectivity Management的配置,这个连接管理平台的配置就是为了使Server 2000与设备通信,分别有指向SQL Server CE Server Agent (sscesa20.dll)虚拟目录的创建,HTTP认证方式的确定,还有就是NTFS权限配置,这些配置与Web配置有很大的相似之处吧。其实就是一个HTTP的连接配置。如果你熟悉Web那么你会很容易理解这些动作的要点。最后一个比较重要的是一个叫做Set NTFS permissions for the SQL Server snapshot folder.的选项。这个选项的必要之处在于它能够为Server与SqlCe之间的数据传输提供一个快照,而且这个快照是非常必要的。实际操作比较简单而但是很关键,只要你在C盘目录下建立一个文件夹并且修改这个文件夹使其Web共享就可以了,这样就提供给设备访问这个快照文件的权限。
        到这里你已经完全进行了所以的安装和配置步骤了,现在你要做的是在浏览器中输入这个路径,如果出现SQL Server CE Server Agent的字样,就说明你能够在设备上进行访问了。当然你要使用你自己的IP和虚拟目录名。 
       现在你可以在设备上使用远程数据访问(RDA)和合并复制了;当然,使用合并复制还需要一些配置,但是这个不在今天的讨论范围内。

       其实SQLCE的安装不是很复杂,但是详细描述一下还是很有必要的。这对于理解Server2000与SqlCe的数据交互有很大的帮助。 
 
 
 
RDA远程数据访问, SqlServer 数据库

sql server 2000与sql server ce2.0通过SqlCeRemoteDataAccess实现数据同步
我已经安装过sql server 2000和sql server ce2.0,接下来只是给这两个安装补丁,我安装的补丁是:Microsoft_sql2ksp4chs1.exe和sqlce20sql2ksp4.exe(也就是sql server ce server tools),确保两个补丁是一样的版本,这里两个都是sp4的。
(1)安装Microsoft_sql2ksp4chs1
要先装这个Microsoft_sql2ksp4chs1,他是sql server2000的很容易安装,按照步骤就好了。
(2)安装sqlce20sql2ksp4.exe
注意:在安装前,确保IIS服务已经启动
    i. 按照提示安装
    ii. 进入SQL Server CE Virtual Directory Creation Wizard界面
    iii. 给virtual directory 输入名称 “sscepubs”(这个你可以自己命名)
    iv. 选择“anonymous access”
    v. 下一步,不进行任何选择
    vi. 安装完成
(3)修改SQL Server 2000
    进入SQL Server的企业管理器,在正在运行的Sever中选择安全性,新建登陆,新增加用户IUSER_计算机名(Internet来宾帐号), 并在数据库

访问中选中要访问的数据库,增加角色”db_owner”,点击确定,完成权限设置
    (4)测试是否安装成功
    在IE中输入http://服务器的IP地址/sscepubs/sscesa20.dll,  如果连接成功且出现“SQL Server CE Agent”

这样子就好了,可以利用SqlCeRemoteDataAccess这个来实现同步了
pull是从 SQL Server 数据库中提取数据并将其存储在 SQL Server CE 数据库的表中
// Connection String to the SQL Server.
        string rdaOleDbConnectString  = "Provider=sqloledb; Data Source=MySqlServer;Initial Catalog=Northwind; " +
                                        "User Id=username;Password = ";
                                     
        // Initialize RDA Object.
        SqlCeRemoteDataAccess rda = null;

        try {
            //Try the Pull Operation.
            rda = new SqlCeRemoteDataAccess();
           
            rda.InternetLogin          = "MyLogin";
            rda.InternetPassword       = "";
            rda.InternetUrl            = "http://服务器的IP地址/sscepubs/sscesa20.dll";
            rda.LocalConnectionString  = @"Provider=Microsoft.SQLSERVER.OLEDB.CE.2.0;Data Source=\ssce.sdf";
          
            rda.Pull(
                "Employees",
                "Select * from Employees",
                rdaOleDbConnectString,
                RdaTrackOption.TrackingOnWithIndexes ,
                "ErrorTable");
        }
        catch(SqlCeException) {
            //Use you own Error Handling Routine.
        }
        finally {
            //Dispose of the RDA Object.
            rda.Dispose();
        }

push是将 SQL Server CE 数据库中跟踪提取表中的更改传送回 SQL Server 表
 string rdaOleDbConnectString  = "Provider=sqloledb; Data Source=MySqlServer;Initial Catalog=Northwind; " +
            "User Id=username;Password = ";
                                     
        // Initialize RDA Object.
        SqlCeRemoteDataAccess rda = null;

        try {
            //Try the Pull Operation.
            rda = new SqlCeRemoteDataAccess();
           
            rda.InternetLogin          = "MyLogin";
            rda.InternetPassword       = "";
            rda.InternetUrl            = "http://服务器的IP地址/sscepubs/sscesa20.dll";
            rda.LocalConnectionString  = @"Provider=Microsoft.SQLSERVER.OLEDB.CE.2.0;Data Source=\ssce.sdf";
          
            rda.Push("MyLocalTable",
                rdaOleDbConnectString,
                RdaBatchOption.BatchingOn);
        }
        catch(SqlCeException) {
            //Use you own Error Handling Routine.
        }
        finally {
            //Dispose of the RDA Object.
            rda.Dispose();
        }

 

阅读(4232) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~