1

我正在寻找一个小建议。

我有一些 SQL Server 表,我需要将一些本地生产任务转移到本地 Access 数据库 - 每个“作业”设置一次,本季度有 400 个作业,跨越十几个用户......

一点背景:

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

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

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

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

我修补了各种组合,没有明显的改进或成功:

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

有什么建议或建议的整体方法吗?将数据作为 XML 移动怎么样?

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

谢谢!

4

2 回答 2

0

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

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

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

我们目前确实通过 FTP 来回移动数据库 - 每天。它用作单个共享数据库,并且由于临时表而有点大。我希望我的新的基于时间戳的推拉每天的变化会是一个整体的优势。似乎是,但最初的 DL 障碍仍然存在。

于 2013-08-27T12:01:42.927 回答
0

这并不完全清楚,但如果执行转储的 MSAccess 数据库是本地的,而 SQL Server 数据库是远程的,那么通过 Internet,您必然会遇到连接的物理限制。

ODBC 驱动程序不打算用于 LAN 以外的数据访问,存在太多延迟。当 Access 查询数据时,它没有打开流,它会获取数据块,等待数据不会被下载,然后请求另一个批次。这在 LAN 上是可以的,但在长距离上会很快降级,特别是当您考虑到美国和印度之间的通信可能有大约 200 毫秒的延迟并且您对此无能为力,因为如果通信协议很繁琐,它会很快加起来,所有这些都建立在连接带宽之上,这很可能远低于您在 LAN 上获得的带宽。

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

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

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

对此有很多解决方案,尽管它们可能需要一些工作才能可靠地自动化。

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

于 2013-08-27T01:46:47.027 回答