none
VS2008中数据库的菜鸟问题 RRS feed

  • 问题

  • 建立一个项目,然后给项目添加新项,选择数据项,里面有“本地数据库”和“基于服务的数据库”,描述分别是“一个用于本地数据的空 SQL Server Compact Edition 数据库”和“用于基于服务的数据访问的空 SQL Server 数据库”。这两个有什么区别?第一个不需要装SQL Server,第二个需要?

    这两种数据库和Access数据库又有什么区别?我现在需要用一个很简单的数据库,存储量很小,单机访问,我应该使用哪种?

    PS:

    我在网上搜到这样一段:
    SQL Server Compact可以免费应用到移动设备,桌面程序,甚至WEB应用里面,由于SQL Server Compact是In-process的数据库引擎,无需额外的安装和维护。SQL Server Compact和Microsoft SQL Server产品族共享通用的API,在.NET开发上可以使用通用的ADO.NET APIs, 同时支持LINQ and Entity Framework。SQL Server Compact不支持存储过程,但是支持T-SQL的子集,在桌面应用可以替代Access,为升级为SQL Server其他版本提供便利。SQL Server Compact是In-Process的数据库,所以不需要安装,只要拷贝到目标目录就能使用。

    可是我比较菜,不懂什么是In-process,不过看起来,貌似这东西比较简单好用的样子,可以替代access?那它有什么缺点呢?为什么很少见?
    • 已移动 Sheng Jiang 蒋晟 2010年2月3日 23:45 SQL Server (发件人:ADO.NET 与 LINQ)
    2010年2月3日 16:59

答案

  • 你好!
         简单来说Sql Server Compact就是一个精简版的数据库,由于体积比较小,主要用在小型的智能设备上,也可以用在台式机上来代替Access
         in process是进程内的意思,这个数据库引起是依附在应用程序进程内运行的,而Sql server Enterprise版本等是作为单独的服务运行的!
         希望这个解释对你有帮助!
         如果还有疑问,我们可以继续交流啊!
    周雪峰
    • 已标记为答案 Nigel T. _ 2010年2月4日 14:06
    2010年2月4日 10:31
  • 实际上你可以用Sql Compact Edition来代替Access,Sql Compact体积很小(1.4M左右),适合直接打包在安装包中!
    如果你使用Access,那客户的机器上需要部署相应版本的Office才可以!

    周雪峰
    • 已标记为答案 Nigel T. _ 2010年2月7日 11:38
    2010年2月6日 10:24

全部回复

  • Data Access Technologies Road Map



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2010年2月3日 23:48
  • 看的一头雾水啊。。不过还是谢谢了
    2010年2月4日 4:28
  • 你好!
         感谢你的信任啊!已经做了回复!
    周雪峰
    • 已标记为答案 Nigel T. _ 2010年2月4日 14:39
    2010年2月4日 10:24
  • 你好!
         简单来说Sql Server Compact就是一个精简版的数据库,由于体积比较小,主要用在小型的智能设备上,也可以用在台式机上来代替Access
         in process是进程内的意思,这个数据库引起是依附在应用程序进程内运行的,而Sql server Enterprise版本等是作为单独的服务运行的!
         希望这个解释对你有帮助!
         如果还有疑问,我们可以继续交流啊!
    周雪峰
    • 已标记为答案 Nigel T. _ 2010年2月4日 14:06
    2010年2月4日 10:31
  • 为什么没见过有人在台式机上用 Sql Server Compact...
    如果我的程序使用 Sql Server Compact 数据库的话,是不是不用像 Sql server Enterprise 那样还要布置环境?

    我在做的是个“消防探头监控系统”。
    平时,状态都是正常的,只显示就行了,不记录。探头报警的时候,才记入数据库。 
    程序做好之后,很可能会做一些改进,比如局域网的多个客户端都可以读取服务器上的火警记录,或者做个aspx的页面来让局域网上的用户查看火警记录,等等。
    但是不论如何,在实际运行的时候,很可能N年都不会发生一次火灾。。。所以数据量极小。。。
    这种情况下,我该如何选择存储记录的方式?
    2010年2月4日 14:36
  • 感谢你的解答,后续的问题在那边继续了,这边结贴吧。呵呵。

    2010年2月4日 14:39
  • VC2010的智能感知就是用的SQLCE。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2010年2月4日 14:41
  • 如果都是一种“简单”数据库的话,SQLCE和ACCESS的区别在哪里?仅仅是“多用于智能设备”吗?两者应该如何选择?

    2010年2月4日 15:01
  • 周版主,我那边还有一些后续的问题,请再过来解答一下吧,谢谢先!
    2010年2月6日 9:55
  • 实际上你可以用Sql Compact Edition来代替Access,Sql Compact体积很小(1.4M左右),适合直接打包在安装包中!
    如果你使用Access,那客户的机器上需要部署相应版本的Office才可以!

    周雪峰
    • 已标记为答案 Nigel T. _ 2010年2月7日 11:38
    2010年2月6日 10:24
  • 你好!
         不好意思,没有注意到啊!
         已经做了回复!
    周雪峰
    2010年2月6日 10:24
  • 我以前是把相应版本的msde打进安装包里。。。
    2010年2月7日 11:38
  • You can use sql2k5/8 express now.
    2010年2月8日 0:47
  • 谢谢你的支持啊!

    我自己在技术上也有很多的不足,希望可以在这里和大家多多交流啊!

    很高兴认识你!我是周雪峰!


    周雪峰
    2010年5月8日 13:02