我最近和一个同事聊天时,他告诉我SQL Express和MS Access本质上是一样的;但我认为这并不准确。我知道你可以将Access转换成SQL数据库,也许在内部它们很相似,但我认为SQL数据库引擎和运行Access所使用的引擎并不相同。此外,SQL语句的语法等也是不同的。
我主要想了解一下各个版本之间的区别,以便提高我的信息水平。
我最近和一个同事聊天时,他告诉我SQL Express和MS Access本质上是一样的;但我认为这并不准确。我知道你可以将Access转换成SQL数据库,也许在内部它们很相似,但我认为SQL数据库引擎和运行Access所使用的引擎并不相同。此外,SQL语句的语法等也是不同的。
我主要想了解一下各个版本之间的区别,以便提高我的信息水平。
嗯,不,不是一样的。
首先,我需要澄清一些术语。MS Access是一种快速应用程序开发(RAD)工具,允许您快速构建与关系数据绑定的表单和报告。它带有基于文件的数据库引擎(Jet/ACE)。
Access RAD工具可以与许多不同的后端数据库一起使用(Jet、SQL Server、任何支持ODBC的数据库等)。我必须假设您的同事特别是在评论Jet/ACE方面,即MS Access使用的数据库引擎。
我认为Jet/ACE数据库引擎和MS SQL Server Express之间最大的区别在于Jet/ACE是基于文件的,而SQL Server Express使用客户端/服务器模型。这意味着SQL Server Express需要运行服务来提供对数据存储的访问。这可能会在某些情况下使部署变得复杂。
SQL Server Express实际上只是SQL Server的限制版本:最大数据库大小为4GB(在2008R2中为10GB),仅使用单个物理CPU等。这些限制是为了防止大型组织使用免费提供的Express版来代替完整的SQL Server安装。这样做的好处是,SQL Server Express提供了真正无缝升级到SQL Server的路径。它也(一般来说)是比Jet/ACE更强大和功能齐全的数据库管理系统。
相似之处
区别
我认为你的同事所想的是SQL Server CE,它是一个超轻量级嵌入式数据库,在数据库管理方面仍然(在我看来)远远优于Access。SQL Express甚至不能与Access进行比较,否则会冒犯前者。
这里是两个产品的数据表,您可以看到这两个数据库之间的一些硬性差异。
Access: http://office.microsoft.com/en-us/access-help/access-specifications-HP005186808.aspx
SQL(Express在最右侧列中列出): http://www.microsoft.com/sqlserver/2008/en/us/editions-compare.aspx
我一直听到的评论是,Access非常适合单用户单访问数据库使用,一旦你超越了单个用户,请寻找其他解决方案。虽然这可能有点牵强,但Access在多用户环境下确实表现不佳。从经验上看,我们曾经有一个客户忽略了我们迁移后端数据库从Access到SQL的请求,我们不得不多次从备份中恢复,或者由于损坏而将Access数据库离线。
它们是两种完全不同的技术,面向两个不同的目标市场。数据库引擎确实不同,正如您提到的T-SQL与Access SQL不同。
您可以通过创建SSIS包或其他工具来“扩展”Access数据库以便迁移到SQL,但这需要将Access模式和数据迁移到真正的SQL数据库。它不仅仅是附加Access数据库之类的操作。
每当您需要一个“真正的”数据库时,我强烈建议查看可用于Access的任何SQL版本。