SQL Server直接连接与MS Access数据库

时间:2017-06-28 15:54:36

标签: sql-server database ms-access visual-studio-2012 oledbconnection

我正在Visual Studio(winform)中为来自全国各地的大约150个用户构建一个应用程序,大多数用户连接到VPN。此表单只会读取数据。

他们使用的当前应用程序在Access数据库中具有本地表,并且在打开时,应用程序将数据库的当前副本放在用户计算机上以进行读取。

现在我正在构建应用程序的新版本,我在2014 SQL Management Studio中创建了SQL表来优化性能并为数据提供更好的恢复系统。

然而,经过大量研究后,我无法确定哪种方法最适合我的具体连接。我应该直接连接到我的SQL表,还是继续放置Access DB的副本并以这种方式连接?

http://blog.nkadesign.com/2009/access-vs-sql-server-some-stats-part-1/

该文章认为访问速度更快

https://social.msdn.microsoft.com/Forums/vstudio/en-US/fadb2742-d75a-49fb-a839-b2d4a9183998/oledbconnection-vs-sqlconnection?forum=vbgeneral

本文认为SQL更快

我认为与SQL的直接连接速度更快但是在将数据库副本放在他们的机器上的过程中我不确定。

任何建议表示赞赏。我保存了8个链接,提供了最少的信息和不同的意见。

3 个答案:

答案 0 :(得分:0)

这里有一些统计数据 访问最大2GB数据库大小最多250个连接。

我建议你转到SQL 2016并探索内存表,如果只是"阅读"

您拥有Express,Standard,Enterprise,Datacenter

的SQL版本

因为您的数据库访问量低于2GB ... SQL Express版本最大BD大小为10GB,但SQL查询执行在ONE CORE上

SQL的其余版本将像往常一样比Access

更好地执行

其中一个漂亮的网站https://www.connectionstrings.com/

如果您将数据从Access引入SQL,您可以使用SSIS或编写自己的应用程序

请进行更多合作"但是在将数据库副本放在他们的机器上的过程中,我不确定。"

你正在计划让所有人安装SQL Express并复制我不明白你的意思是什么?

您应该在一个地方安装SQL服务器

答案 1 :(得分:0)

那么,鉴于您将访问权限转储为数据库,您正在采用SQL服务器,那么为什么要在这里引入和使用Access呢?

您在此处未提及继续将Access用作数据库。如果您使用的是Access表单,报表等,那么这是一个非常不同的问题。既然你的开发平台是Visual Studio和SQL服务器,那么我不能因为任何明智的理由弄清楚为什么你考虑继续使用Access进入这个组合?

过去你说过数据是本地的。如果数据可以保持为每个用户本地,并且不需要通过某些Internet / VPN连接共享?那么当然有一个本地数据存储,相比之下,互联网上运行速度要快几十倍,更可靠。如果用户之间不需要数据共享,那么我认为没有理由采用SQL服务器。

但是,如果要共享数据,那么您需要一个中央数据库。我的意思是当然非共享的本地数据系统不需要互联网并始终处理本地数据在性能方面要好得多,因为数据保留在每个工作站上,而其他用户甚至不关心它们是否有互联网连接。

因此,在速度方面,每台计算机上Access中本地数据的比较速度将比连接到SQL服务器的速度快几十倍。某些互联网连接比本地磁盘驱动器慢1000倍。因此3秒延迟现在将变为3000秒(50分钟)。这种性能差异是典型的和普通的。所以3秒将成为50分钟。 (再次:常见的增加查询次数)。

您无法从Visual Studio连接到Access中的链接表,而链接表又链接到SQL服务器(但即使您可以 - 为什么不直接连接到SQL服务器并绕过Access 100%)。

继续使用Access的唯一情况是,如果所有用户的数据都是独立的,并且不需要共享该数据。但是,如果是这种情况,那么为什么要引入SQL服务器呢?访问数据库的简单“复制”就足以进行备份了,当没有中央数据存储时,我认为没有采用SQL服务器作为中央数据存储的任何优势。

答案 2 :(得分:0)

您正在做的是在某种意义上创建用于报告的数据库快照。这是一种公认​​的做法,通常在数据不需要是实时时使用。

我还可以理解在处理VPN连接时保留本地副本。用户提交的每个查询都需要通过网络提取数据,因此除非返回的数据集非常小,否则此解决方案似乎是合适的。

它是每个查询返回的数据量与数据集总大小的平衡。如果您只是为每个查询提取KB数据,则在刷新本地副本时可能不希望提取GB的数据。

至于本地数据库技术,我认为你可以使用Access,特别是如果你想使用Access表单/报告/应用程序。我也认为你可以使用另一种类型的本地SQL数据库。我不认为在选择本地技术时你需要担心性能。只要数据是本地数据并且不通过网络通过VPN传输,Access和另一个现代数据库引擎之间的性能差异应该可以忽略不计。