应用SQL Server 2005 Compact Edition

0、序言--SQL Server 2005大家族

细数一下才发现SQL Server 2005产品线中居然包含了这么多版本:除了熟悉的StandardEnterprise等版本外,还有Workgroup EditionExpress EditionCompact Edition的版本。

划分是细致了,但是每一个版本都有针对了特定的应用环境。

SQL Server Express Edition - 前身就是MSDE,包含了SQL Server所有基础的功能,算是SQL Server入门级的版本,可以作为桌面程序的数据引擎,也可以作为客户/服务器系统的数据库引擎。Express Edition只提供了数据服务,并不包含管理工具,数据库的最大容量是4GB

SQL Server Workgroup Edition主要针对工作组一级的应用,适用在小型的公司或者分支机构。该版本在Express Edition的基础上提供了合并复制的服务,数据库容量没有限制,并且支持2CPU3GB的内存;支持全文搜索,备份日志传送。并且包含数据库管理工具。

SQL Server Standard Edition主要针对中小型企业。该版本在Workgroup Edition的基础上增加了基础数据分析(商业智能)的模块。支持故障转移集群,数据库镜像;提供了数据库优化顾问。有本机32位或64位的版本;支持Itaniumx64。并支持4CPU,不限制RAM

SQL Server Enterprise Edition完全是增对企业级的数据管理和分析平台,提供了数据挖掘等完整地数据分析的特性,并且不限制规模和分区。

SQL Server Compact Edition比较特殊,下面单独介绍。

 

 

1SQL Server 2005 Compact Edition

SQL Server Compact Edition也不是一个新东西,它的前身是SQL Server Mobile Edition 2.0主要是为嵌入式系统和智能设备提供本地数据存储的引擎。与SQL Server其它版本相比,它最大的不同是它不是作为一个服务存在的,而是一种轻量级的,依附在应用程序进程内的数据库引擎。一个SQL Server Compact Edition的数据文件,简单的讲就和Access一样。

SQL Server Compact Edition非常简单,安装完毕之后,你会发现除了一些资源和文档之外,仅包括一个OLEDBProvider以及一套DotNET的访问类库。

下面通过一些比较来增强以下对Compact Edition的认识。

1.1SQL Server Compact EditionExpress Edition的比较

SQL Server Express EditionWorkgroup等版本差别仅仅是功能和性能上的差异,而与Compact Edition的差距是巨大的。

A)SQL Server Express Edition一定需要通过MS提供的安装包安装;Compact Edition可以通过安装包安装,也可以将支持文件集成到应用程序的安装包中,因为非常小,才10来个文件,2M都不到。

B)SQL Server Express Edition作为一个服务独立运行,而Compact Edition是依附在应用程序的进程内运行的。

C)对于最终数据库部署而言,SQL Server Express Edition需要在应用环境中运行脚本重新创建数据库;Compact Edition可以运行脚本重新创建,也可以将数据库文件直接复制到目标计算机上,即可使用。

D) 最大并发访问数量,SQL Server Compact Edition没有限制,而Compact Edition255个。

E) SQL Server Express Edition支持基于角色的安全性,而Compact Edition仅支持对数据库文件进行密码保护的安全模式。

F) SQL Server Express EditionCompact Edition都支持T-SQL的基本功能,支持多种隔离级别和事务,但是Compact Edition不支持分布式事务,不支持XML查询,不支持存储过程、触发器和视图等一些高级的功能。

G) SQL Server Express EditionCompact Edition都可以作为合并复制服务的订阅者。除此以外Compact Edition还提供了利用IIS的远程数据访问(RDA)的功能,能够和远程的SQL Server服务上载与下载变化的数据;这一点Express Edition并不支持。

总之和SQL Server的其它版本相比,Compact Edition果然相当“精简”,差异比较明显。

 

1.2SQL Server Compact EditionAccess比较

自从接触了SQL Server Compact Edition之后,笔者一直觉得这个版本与Access更相似,而不是同为SQL Server家族的其它成员。如果要写“SQL Server Express EditionAccess的比较”的话,上面一段中除了G条目外,也都适用。

非要比较Compact EditionAccess的区别的话,实在是不多。

A)  数据类型不同,SQL Server Compact EditionSQL Server家族成员支持的数据类型完全相同;而Access是按照自己的一套应用定义的,比如没有什么nText,而有OLE对象这种类型。

B)  SQL Server Compact Edition支持的RDA也是Access所没有的。

C)  SQL Server Compact EditionAccess虽然都不支持视图,但是Access可以通过Query起到和View对等的作用;Compact Edition没有任何组织数据之间逻辑表现的能力。

D) 从配套工具来讲,Access还有数据库优化向导、数据导入/导出什么的,SQL Server Compact Edition都没有。其中最可恶的是不支持导入导出,不过也还好和Visual Studio 2005集成紧密,自己搞也不算太费劲。

综上笔者认为,SQL Server Compact Edition除了数据结构和存储引擎和SQL Server的其它版本完全兼容,在性能上可能也有一定的优势外,就本地数据库功能和易用性来说,比不上Access

 

 

2SQL Server 2005 Compact Edition的应用

了解了SQL Server 2005 Compact Edition的一些特性之后,下面简单介绍一下怎么管理Compact Edition的数据库以及怎样对Compact Edition进行编程。

2.1、对数据库文件进行管理

可以通过SQL Server Management Studio或者System.Data.SqlServerCe命名空间中SqlCeEngine类提供的方法进行。

SQL Server Management Studio是一体化的SQL Server管理工具,安装SQL Server 2005 Workgroup Edition以上的版本才包含该工具(可以仅安装管理工具,不安装数据库服务引擎)。

安装SQL Server 2005 Compact Edition之后,会自动在全局(GAC)中注册Sytem.Data.SqlServerCe命令空间,支持组件的文件缺省位于“C:/Program Files/Microsoft SQL Server Compact Edition/v3.1/System.Data.SqlServerCe.dll”。

A)创建数据库

a)        在管理工具中,选择“连接”àSQL Server Mobile

在“连接到服务器”对话框中选择“新建数据库

在“创建新的数据库”对话框中,填写数据库文件的存储路径,还可以设置口令和加密模式。

单击确定按钮之后就创建了一个Compact Edition的数据库文件。

b)        利用可编程对象。
SqlCeEngine
中提供了CreateDatabase方法,可以用来创建一个新的Compact Edition的数据库文件,并且设定数据库的属性。

B)删除数据库
Compact Edition
的数据库删除非常简单,和Access一样,只需要将存储的数据文件删除即可。

C)维护数据库

a)        在管理工具中,连接需要维护的数据库文件,选择该数据库右键菜单中的“属性”子菜单项;

在“数据库属性”对话框可以进行数据库压缩、修改或者新修改密码等操作。

b)        利用可编程对象。
SqlCeEngine
中提供了Compact(),可以压缩数据库。也就是创建一个新的数据库文件来存储现有数据库压缩后的副本。如果要数据库文件的密码可以通过这个方法来替代。
SqlCeEngine
中还提供了Shrink()方法,调用该方法使数据库文件本身收缩,释放不必要的磁盘空间。
SqlCeEngine
中还提供了Repire()方法,修复损坏的数据库。

 

2.2、对数据库文件进行编程

SQL Server Compact Edition的管理非常简单,编程也一样,和其它数据库管理系统(例如Access或者SQL Server的其它版本)的调用没有太大的不同。

C#为例,访问Compact Edition的数据库文件有两种常用的方法:
一个是通过System.Data.SqlServerCe命名空间下的组件,该组件不但包含了数据访问的接口,还包括了数据管理的接口(前面提到的SqlCeEngine),如果希望对数据库文件本身进行管理,只能采用该方法。
第二种就是采用包含在System.Data.SqlClient或者System.Data.OleDB下的组件进行数据的添加、修改、删除和查询等。建议采用OleDB组件进行数据库的访问,这样代码的可移植性更高一点,如果数据库平台迁移到Access或者Oracle等其它平台下,代码本身的修改也比较小。

 

下面就列几个与其它数据库的例子:

A)创建数据库

 

if  (File.Exists( " Test.sdf " ))
    File.Delete(
" Test.sdf " );

string  connStr  =   " Data Source = Test.sdf; Password = <password>; " ;
SqlCeEngine engine 
=   new  SqlCeEngine(connStr);
engine.CreateDatabase();
engine.Dispose();

 

B)连接数据库

a)        采用System.Data.SqlServerCe

SqlCeConnection oConn  =   new  SqlCeConnection();
oConn.ConnectionString 
=   " Data Source=Test.sdf,Password=123456 " ;
oConn.Open();

 

b)        采用System.Data.OleDb
采用OleDb的话,主要是连接字符串,特别是Provider不能写错,否则就无法工作,文档中明显提及Provider的名称,不过熟悉的话,找找注册表就能够发现完整的名称。

OleDbConnection m_oConn  =   new  OleDbConnection();
m_oConn.ConnectionString 
=  String.Format( " Provider=Microsoft.SQLSERVER.MOBILE.OLEDB.3.0;Data Source=Test.sdf;SSCE:Database Password=123456 " );
m_oConn.Open();

 

其它有关数据的操作和一般的数据库管理平台没啥区别,也就是CommandRecordSet之间的调用,这里就不赘述了。

 

 

3、后记--怎样选择数据库管理系统

总而言之,SQL Server 2005 Compact Edition使用和维护都很简单,为我们在设计应用时增加了一些新的思路。

最后简单的总结一下,在不同的应用环境下,选择哪种数据库管理系统相对比较合适些。

A) 如果需要提供数据服务的,也就是有独立的服务器,很多客户需要访问服务器来获得数据的,那么可以采用SQL Server Express EditionWorkgroup EditionStandard Edition或者Enterprise Edition。如果只关心数据存储,Express或者Workgroup Edition就可以胜任,Express Edition是可以免费发布的版本,如果应用规模小,强烈推荐;如果应用倾向于数据分析,那么则应该选择Standard或者Enterprise EditionEnterprise Edition增强的更多的主要是提高可用性和故障恢复的能力。

B) 如果是自己提供中央数据服务的CS应用的服务端,或者B/S应用中的服务端,也就是说有服务端,很多客户访问服务器,但是只有服务端自身对数据库进行访问,客户端通过中间层服务获得应用。这时候可以选择AccessSQL Server Compact Edition或者Express Edition,当然也可以选择SQL Server更高端得版本,主要看数据库的规模以及成本。

C) 如果需要提供本地数据服务,也就是只在本机访问存储在本地的数据,例如类似Outlook本地文件夹的本地存储的应用。这时候可以选择AccessSQL Server Compact Edition或者Express Edition
这类需要在很多计算机上安装的应用,必须要考虑部署和维护问题,无疑AccessCompact Edition的部署是最简单的。如果还有和中央数据进行数据同步的需要,或者同时需要访问本地和服务器端的数据,这时Compact Editon无疑是最好的选择。

D) 如果WinCE平台下智能设备或者移动设备的应用中希望提供数据存储的服务,那么Compact Edition也许是唯一的选择了。

 

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值