繁体   English   中英

如何在远程.mdb文件上运行MS-Access SQL查询?

[英]How does an MS-Access SQL query run on a remotely located .mdb file?

我试图了解如何对.mdb文件进行查询。 假设文件位于共享驱动器PC2上,我从PC1以编程方式打开它。

当我连接到.mdb文件时,我假设在PC2上没有启动MS Access的“实例”(因为它是一个简单的文件服务器)。 这个对吗?

当我进行SQL查询时,是否必须在本地复制表,然后运行查询然后返回我的结果并丢弃表和任何多余的数据?

如果我在查询中“按顺序”会发生什么? 是返回的整个查询,然后在本地订购,或以某种方式远程订购?

我确定我还有其他问题,但我正在尝试了解如何从远程位置连接到MDB文件。 (我找到了一个相当大的延迟,所以一个特定的查询可能需要9秒,在我的情况下这是不可接受的,我试图了解这是如何工作的,如果它可以改进)。

在这种情况下我使用c#运行,我不认为这应该会有很大的不同,但可能在您的回复中。

当我连接到.mdb文件时,我假设在[远程机器]上没有启动MS Access的“实例”(因为它是一个简单的文件服务器)。 这个对吗?

是。 应用程序将与本地计算机上的Access数据库引擎的副本进行交互,然后从远程计算机上的数据库文件中检索信息。

当我进行SQL查询时,是否必须在本地复制表,然后运行查询然后返回我的结果并丢弃表和任何多余的数据?

不必要。 根据所涉及的表的索引方案,Access数据库引擎可能只需要检索相关索引,然后确定数据文件中包含要检索的记录的特定页面。 在某些情况下,它可能需要检索整个表(例如,当需要进行全表扫描时),但并非总是如此。

如果我在查询中“按顺序”会发生什么? 是返回的整个查询,然后在本地订购,或以某种方式远程订购?

Access文档说索引将加快排序操作(参考: 这里 ),表明Access数据库引擎可以按排序顺序从远程文件中检索所需的行。

你的直觉是正确的,mdb / mde dbs只是美化的文本文件,必须在本地处理。 以下是有关网络性能的一些提示: http//www.granite.ab.ca/access/performancefaq.htm

但由于SQL Server Express是免费的,因此几乎没有理由不迁移,特别是因为Access有一个工具来管理它。 在低容量多用户环境(例如2-10)中,MS Access可以正常工作,但对于以任何可能的方式提供更多用户和/或交易的企业解决方案,您都会遇到灾难。

加上戈德的回答......

通过Windows文件页锁访问Access数据库。 我的理解是,Microsoft将此页面锁定专门用于MS Access(但也可通过Windows API用于任何文件)。

由于实例是本地的,并且通过文件页锁来处理冲突和冲突,因此客户端 - 服务器争用是一个问题。 访问在这里已知问题。 这就是为什么我应该尽可能切换到SQL Server Express(也是免费的)。 但是,是的,MS Access具有一定的便利性; SSE具有更大的占地面积和更不友好的GUI

所有桌面数据库都有客户端/服务器问题 戈德的回答符合我的知识。 索引的要点是减少需要在本地提取的表数据量。 与表数据相比,拉索引是一项相对较小的任务。 这是标准的索引优化,虽然我认为由于远程数据和文件分页,它对于桌面数据库来说更为重要。

通常,Access(JET)引擎无需远程操作。 它是所有文件数据,并在本地MSA / Jet引擎中本地执行。 您知道这一点,因为引擎是本地安装的,不必安装在文件主机上。 然而,它是分散处理负荷的方便快捷和方便的方式。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM