SQL Server表> MS Access本地副本?

时间:2013-08-26 19:19:18

标签: sql-server vba ms-access

我正在寻找一些建议。

我有一些SQL Server表我需要移动到本地Access数据库以执行一些本地生产任务 - 每个“作业”设置一次,这个qtr有400个作业,对十几个用户......

一点背景:

  1. 我目前正在使用无DSN方法来避免分发问题

  2. 我可以创建到远程表的临时LINKS并运行“make table”查询来填充本地表,然后删除远程表。按预期工作。

  3. 在美国的表现很不错 - 约40K记录10-15秒。我们的印度团队正在为相同的数据集看到> 5-10分钟。他们的互联网连接不错,不是很好,而且是我无法控制的变量。

  4. 我想知道MS Access是否在这里增加了一些开销,而不是通过更直接的方法来避免:即,让服务器完成所有/大部分繁重的工作与Access?

  5. 我已经修改了各种组合,没有明显的改进或成功:

    • Access
    • 中的参数化存储过程
    • 来自Access的SQL Passthru查询
    • ADO vs DAO

    有任何建议,或建议的整体方法?如何将数据作为XML移动?

    注意:我有Access 7,10,13个用户。

    谢谢!

2 个答案:

答案 0 :(得分:0)

目前尚不完全清楚,但如果执行转储的MSAccess数据库是本地的,并且SQL Server数据库是远程的,则通过互联网,您必然会遇到连接的物理限制。

ODBC驱动程序不能用于LAN之外的数据访问,而且延迟太多。 当Access查询数据时,是不打开流,它取出它的块,等待下载的数据,然后请求另一批。这在局域网上是可以的,但是在很长的距离内很快就会降级,特别是当你认为美国和印度之间的通信可能有大约200毫秒的延迟而且你无法做很多事情,因为如果通信协议很繁琐,它会很快加起来这一切都在连接的带宽之上,很可能低于你在局域网上获得的带宽。

更好的解决方案是在本地执行转储,然后在压缩后压缩并传输生成的Access文件(例如,使用7z进行更好的压缩)。这很可能导致非常小的文件很容易在几秒钟内移动。

该过程可以轻松实现自动化。最简单的方法是每天自动执行此转储,并使其在FTP服务器或内部网站上可供下载使用。

您也可以按需提供,也可以通过服务器上运行的应用程序提供,并通过RemoteApp使用Windows 2008服务器上的RDP服务或仅通过网站或shell提供。 您还可以在SQL Server上有一个简单的Windows服务,它可以侦听安装在本地机器上的远程客户端的请求,这些服务将处理转储并将其发送到客户端,然后客户端将其解压缩并替换以前下载的数据库。

很多解决方案,即使他们可能需要一些工作来可靠地自动化。

最后一点:如果您将数据从SQL Server自动转储到Access,请避免以自动方式使用Access。它很难调试,很容易破解。使用导出工具,而不依赖于安装Access。

答案 1 :(得分:0)

Renaud等等,感谢您花时间提供回复。正如您所注意到的,互联网上的性能是瓶颈。块的获取(相对于连续的DL)数据正是我希望通过替代方法避免的。

或者工作流程正在发展以更好地利用时钟的两个方面,其中美国的User1在本地数据库中完成他们当天的工作,然后将他们的更新发送回服务器(基于时间戳)。在印度的User2也有一个相同数据库的本地副本,在一天开始时只从服务器上获取更新的记录。所以,对于日常工作非常有效。

主要问题是当前“作业”的服务器(巨大的多年DB)的本地数据库表的初始DL - 应该在努力开始时只发生一次(〜1周长的过程)是印度需要5-10分钟完成的作品。

我们目前通过FTP - DAILY来回移动数据库。它用作SINGLE共享DB,由于临时表而有点大。我希望我每天新的基于时间戳的推拉只是一个整体加分。似乎是,但最初的DL障碍仍然存在。