SQL Server CE 2.0的全名是SQL Server 2000 Windows CE Edition version 2.0。2002年秋天就有了,那时候也正好是.NET Compact Framework刚刚出来的时候。那时候就想研究研究,但因为实际需求太少、没有人问问题、没人有做项目,所以就一直扔着。
不过随着Pocket PC/Windows Mobile越来越被人熟悉,一些实际需求也就带动出来了。典型的需求是Field Service。现在很多Field Service仍然是依赖纸张,做不到全部电子化。
例子1:公司派人去仓库验货、点货,可以把清单同步到Pocket PC上,然后在仓库里面直接在PPC上面update,回到公司一同步就可以了。否则按照原先做法,需要先打印一张清单,回来以后再录入一遍。
例子2:联想派人上门来修电脑,以前总是带着一张打印出来的派工单,维修晚了以后维修的人填写维修记录,然后让客户签字。这样做,一则是纸质派工单的档案管理很麻烦,二则维修记录等停留在纸上,如果想用作知识管理、Business Intelligence等更多分析用途,还需要再找人输入。如果能把派工单同步到Pocket PC里面,在现场直接填写记录以及让客户签字,回来一下子同步到服务器上,就方便多了。
所以,前两天下定决心把SQL CE摸了一下,写了一些心得。如果没有摸过SQL CE但也想了解一下,看我这些心得应该可以解决大部分常见的对于SQL CE的问题。
1. SQL CE的架构 首先要回答的问题是“SQL CE是什么”。简单的说,SQL CE就是运行在Pocket PC以及其他Windows CE平台上的一个很简化的SQL Server 2000/7.0。之所以说是“简化”的,因为它支持的功能少、数据类型比较少、周边工具也少。除了运行在Device上的部分以外,SQL CE还带了一套开发包(就是Sqlce Data Provider),以及SQL CE Server Tool用来连接服务器上的SQL Server 2000/7.0:

开发时,可以用VS.NET或者eVB/eVC来开发。如果用eVB/eVC开发,就用ADOCE 3.1;如果用.NET开发,就用.NET Compact Framework以及SQL Server CE Data Provider,用法基本上和原先的ADO.NET没啥太大的区别:

运行时,SQL CE的感觉就好像是SQL Server 2000/7.0的一个副本,SQL CE应用程序本身在Pocket PC上会占用1-3MB空间,另外数据回存放在后缀名为.sdf的文件中(和SQL2K中的mdf文件同样的角色)。用户在Pocket PC上做的操作都先发生在SQL CE上,然后再时不时地和SQL Server 2000/7.0同步(Replication)。当然,也可以用RDA(Remote Data Access)的方式,直接让数据操作发生在SQL Server 2000/7.0上。
这里一个有意思的地方是无论用Replication还是RDA,移动设备访问SQL Server 2000/7.0时必须通过IIS进行,不知道这个设计是否考虑了Web Server会放在DMZ里面而SQL会放在Internal的原因:

2. SQL CE的安装 如果我没有记错的话,SQL Server CE 2.0