0、序言--SQL Server 2005大家族
细数一下才发现SQL Server 2005产品线中居然包含了这么多版本:除了熟悉的Standard和Enterprise等版本外,还有Workgroup Edition、Express Edition、Compact Edition的版本。
划分是细致了,但是每一个版本都有针对了特定的应用环境。
SQL Server Express Edition - 前身就是MSDE,包含了SQL Server所有基础的功能,算是SQL Server入门级的版本,可以作为桌面程序的数据引擎,也可以作为客户/服务器系统的数据库引擎。Express Edition只提供了数据服务,并不包含管理工具,数据库的最大容量是4GB。
SQL Server Workgroup Edition – 主要针对工作组一级的应用,适用在小型的公司或者分支机构。该版本在Express Edition的基础上提供了合并复制的服务,数据库容量没有限制,并且支持2个CPU和3GB的内存;支持全文搜索,备份日志传送。并且包含数据库管理工具。
SQL Server Standard Edition – 主要针对中小型企业。该版本在Workgroup Edition的基础上增加了基础数据分析(商业智能)的模块。支持故障转移集群,数据库镜像;提供了数据库优化顾问。有本机32位或64位的版本;支持Itanium和x64。并支持4个CPU,不限制RAM。
SQL Server Enterprise Edition – 完全是增对企业级的数据管理和分析平台,提供了数据挖掘等完整地数据分析的特性,并且不限制规模和分区。
SQL Server Compact Edition比较特殊,下面单独介绍。
1、SQL 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非常简单,安装完毕之后,你会发现除了一些资源和文档之外,仅包括一个OLEDB的Provider以及一套DotNET的访问类库。
下面通过一些比较来增强以下对Compact Edition的认识。
1.1、SQL Server Compact Edition和Express Edition的比较
SQL Server Express Edition与Workgroup等版本差别仅仅是功能和性能上的差异,而与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 Edition是255个。
E) SQL Server Express Edition支持基于角色的安全性,而Compact Edition仅支持对数据库文件进行密码保护的安全模式。
F) SQL Server Express Edition和Compact Edition都支持T-SQL的基本功能,支持多种隔离级别和事务,但是Compact Edition不支持分布式事务,不支持XML查询,不支持存储过程、触发器和视图等一些高级的功能。
G) SQL Server Express Edition和Compact Edition都可以作为合并复制服务的订阅者。除此以外Compact Edition还提供了利用IIS的远程数据访问(RDA)的功能,能够和远程的SQL Server服务上载与下载变化的数据;这一点Express Edition并不支持。
总之和SQL Server的其它版本相比,Compact Edition果然相当“精简”,差异比较明显。
1.2、SQL Server Compact Edition和Access比较
自从接触了SQL Server Compact Edition之后,笔者一直觉得这个版本与Access更相似,而不是同为SQL Server家族的其它成员。如果要写“SQL Server Express Edition与Access的比较”的话,上面一段中除了G条目外,也都适用。
非要比较Compact Edition和Access的区别的话,实在是不多。
A) 数据类型不同,SQL Server Compact Edition和SQL Server家族成员支持的数据类型完全相同;而Access是按照自己的一套应用定义的,比如没有什么nText,而有OLE对象这种类型。
B) SQL Server Compact Edition支持的RDA也是Access所没有的。
C) SQL Server Compact Edition和Access虽然都不支持视图,但是Access可以通过Query起到和View对等的作用;Compact Edition没有任何组织数据之间逻辑表现的能力。
D) 从配套工具来讲,Access还有数据库优化向导、数据导入/导出什么的,SQL Server Compact Edition都没有。其中最可恶的是不支持导入导出,不过也还好和Visual Studio 2005集成紧密,自己搞也不算太费劲。
综上笔者认为,SQL Server Compact Edition除了数据结构和存储引擎和SQL Server的其它版本完全兼容,在性能上可能也有一定的优势外,就本地数据库功能和易用性来说,比不上Access。
2、SQL 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 = ;";
SqlCeEngine engine = new SqlCeEngine(connStr);
engine.CreateDatabase();
engine.Dispose();
B)连接数据库
a) 采用System.Data.SqlServerCe
SqlCeConnection Conn = 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();
其它有关数据的操作和一般的数据库管理平台没啥区别,也就是Command和RecordSet之间的调用,这里就不赘述了。
3、后记--怎样选择数据库管理系统
总而言之,SQL Server 2005 Compact Edition使用和维护都很简单,为我们在设计应用时增加了一些新的思路。
最后简单的总结一下,在不同的应用环境下,选择哪种数据库管理系统相对比较合适些。
A) 如果需要提供数据服务的,也就是有独立的服务器,很多客户需要访问服务器来获得数据的,那么可以采用SQL Server Express Edition、Workgroup Edition、Standard Edition或者Enterprise Edition。如果只关心数据存储,Express或者Workgroup Edition就可以胜任,Express Edition是可以免费发布的版本,如果应用规模小,强烈推荐;如果应用倾向于数据分析,那么则应该选择Standard或者Enterprise Edition,Enterprise Edition增强的更多的主要是提高可用性和故障恢复的能力。
B) 如果是自己提供中央数据服务的CS应用的服务端,或者B/S应用中的服务端,也就是说有服务端,很多客户访问服务器,但是只有服务端自身对数据库进行访问,客户端通过中间层服务获得应用。这时候可以选择Access、SQL Server Compact Edition或者Express Edition,当然也可以选择SQL Server更高端得版本,主要看数据库的规模以及成本。
C) 如果需要提供本地数据服务,也就是只在本机访问存储在本地的数据,例如类似Outlook本地文件夹的本地存储的应用。这时候可以选择Access、SQL Server Compact Edition或者Express Edition。
这类需要在很多计算机上安装的应用,必须要考虑部署和维护问题,无疑Access和Compact Edition的部署是最简单的。如果还有和中央数据进行数据同步的需要,或者同时需要访问本地和服务器端的数据,这时Compact Editon无疑是最好的选择。
D) 如果WinCE平台下智能设备或者移动设备的应用中希望提供数据存储的服务,那么Compact Edition也许是唯一的选择了
该文章转载自网络大本营:http://www.xrss.cn/Dev/DotNet/2007111117523.Html
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12641349/viewspace-142946/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12641349/viewspace-142946/