Sql server SQL Server Express与MS Access

Sql server SQL Server Express与MS Access,sql-server,ms-access,sql-server-express,Sql Server,Ms Access,Sql Server Express,我的一位同事最近告诉我,SQL Express和MS Access本质上是一回事;这似乎不是一个准确的说法。我知道您可以将Access转换为SQL DB,可能在封面下它们是相似的,但我假设SQL DB引擎和用于运行Access的内容是不同的。不仅如此,我知道的SQL语句语法等都不一样 我主要是想了解这些版本,以便更多地了解它们。我想你的同事想到的是,这是一个超轻量嵌入式数据库,在数据库管理方面仍然(IMO)远远优于Access。SQL Express甚至不能与Access进行比较而不冒犯前者。以

我的一位同事最近告诉我,SQL Express和MS Access本质上是一回事;这似乎不是一个准确的说法。我知道您可以将Access转换为SQL DB,可能在封面下它们是相似的,但我假设SQL DB引擎和用于运行Access的内容是不同的。不仅如此,我知道的SQL语句语法等都不一样


我主要是想了解这些版本,以便更多地了解它们。

我想你的同事想到的是,这是一个超轻量嵌入式数据库,在数据库管理方面仍然(IMO)远远优于Access。SQL Express甚至不能与Access进行比较而不冒犯前者。

以下是这两种产品的数据表,因此您可以看到有关这两种数据库之间差异的一些确凿事实

访问:

SQL(最右侧列中列出了Express):

我经常读到的评论是,Access非常适合单用户单访问数据库的使用,当您扩展到单用户以外的其他地方时。虽然这可能有点牵强,但Access在多用户环境中确实做得不好。根据经验,我们有一个客户端忽略了我们将后端数据库从Access迁移到SQL的请求,并且有很多情况下我们不得不从备份中恢复,或者由于损坏而使Access数据库脱机

它们是两种完全不同的技术,有两个不同的目标市场。数据库引擎确实不同,正如您提到的,T-SQL与Access SQL不同

您可以通过创建SSIS包或其他工具来执行导入,将Access数据库“扩展”到SQL,但这会获取Access架构和数据,并将其迁移到真正的SQL数据库。它不仅仅附加Access数据库或类似的功能

无论何时,只要您需要“真实”数据库,我强烈建议您查看通过Access提供的任何SQL版本

嗯,不,不一样

首先,我需要澄清一些术语。MS Access是一种快速应用程序开发(RAD)工具,允许您快速构建绑定到关系数据的表单和报表。它附带了一个基于文件的数据库引擎(Jet/ACE)

Access RAD工具可用于许多不同的后端数据库(Jet、SQL Server、任何支持ODBC的数据库等)。我不得不假设你的同事特别评论了Jet/ACE,即MS Access使用的数据库引擎

我认为和之间最大的区别是,Jet/ACE是基于文件的,sqlserverexpress使用客户机/服务器模式。这意味着SQL Server Express需要一个正在运行的服务来提供对数据存储的访问。在某些情况下,这会使部署复杂化

SQL Server Express实际上只是SQL Server的一个限制版本:最大数据库大小为4GB(2008年R2为10GB),仅使用一个物理CPU,等等。这些限制是为了防止大型组织使用免费提供的Express edition来代替完整的SQL Server安装。结果是,SQLServerExpress提供了到SQLServer的真正无缝升级路径。它也是(一般来说)一个比Jet/ACE更健壮、功能更全面的数据库管理系统

相似性

  • 关系数据库管理系统
  • 由微软编写
差异

  • MS访问
    • 基于文件
    • 免费可分发运行时(2007或更高版本)
    • RAD工具(表单/报表设计器)
    • 使用jetsql
    • 最大文件大小2GB
  • SQL Server Express
    • 客户机/服务器模型
    • 免费的
    • 没有RAD工具
    • 使用Transact-SQL
    • 最大数据库大小4GB(对于SSE R2为10GB),最大一个物理CPU

只要记住,使用MS Access,如果您玩对了牌,就不会有大小限制。例如,没有理由不在自己的数据库中单独包含许多2到4个Gig表。ODBC应用程序可以打开到多个MS Access数据库的连接,并在每个数据库中查询单个表。因此,您可以拥有一个包含数万亿条记录的数据库,这些记录存储在多个MDB文件中。我曾为一家公司工作,该公司使用一个MS Access数据库来运行一个以MS Access表单完成的问题跟踪系统。他们一次只能使用一个人,因为共享会锁定MS访问的问题。我为数据库编写了一个Win32 Perl本机Windows GUI用户界面,该界面在字段/记录验证方面更为出色,并且我的ODBC代码能够管理连接以便用户同时访问。我通过Perl程序为每个用户管理数据库的打开、读取、写入和关闭。我没有让数据库保持打开状态。我没有为每个用户维护一个持久连接,而是只维护了一个足够长的连接来检索一条记录进行编辑。然后关闭连接,直到将记录写回数据库。此外,我还编写了自己的记录锁定程序逻辑,方法是维护一个用户登录表,其中包含用户当前正在编辑的记录的记录id,然后在不再编辑该记录时删除该条目。当另一个用户编辑同一条记录时,程序会检查该记录当前是否已打开供另一个用户编辑。该系统运行完美。MS Access从未通过ODBC和多用户访问锁定。我甚至在我编译的Perl程序中嵌入了数据库的密码,这样除了通过我的Perl程序之外,没有人能够访问Access数据库中的数据

sql server的compact版没有存储过程或表触发器,而默认的Access数据引擎现在有