访问连接到远程Postgresql数据库通过ODBC可用?

我目前有一个MS Access应用程序通过ODBC连接到PostgreSQL数据库。 这成功地运行在一个有20个用户(每个都运行他们自己的Access版本)的局域网上。 现在我正在考虑一些灾难恢复的情况,似乎保护数据的一种快速简单的方法是使用日志传送来创build热备份。

这让我想到把这个热备份放在一个偏远的地方,但是我有这个问题:

Access是否可以通过ODBC连接到远程数据库 ? 即远程数据库可能在同一个国家与好的ping时间,我有一个1mbit SDSL线。

简短的回答:是的。

长答案:如果你正在返回更小的数据集,是的。 您还需要在pgodbc驱动程序中启用特定的标志和设置,因为Access会从服务器反馈的内容中删除:

KSQO(键盘查询优化)应该是打开的。 是的,我知道文档说这不是必需的,但是发生的事情是,MSAccess正在传递一些看起来像SQL的服务器。 这只是使SQL语句凌乱一点。 不要相信我? 打开ODBC日志logging,发送一个单一的查询,closures日志,犁通过几个谷壳,90%的方式,你会看到一个生成和传递一个讨厌的SQL语句。 不,它不是 ODBC驱动程序,而是Access。

如果您计划交互式查看大型数据集,则应使用Declare / Fetch 。 这会使驱动程序获取更小的结果集块,而不是将一个怪物加载到其中。

文字为LongVarChar – 你可能希望testing这个。 我怀疑你会想要“开”。

未知尺寸应设置为最大。

Max Varcharbuild议在254或更less,尽pipe你可以做得更多。

额外的选项 – 设置为0x6(假的MS SQL服务器+答复在ANSI而不是Unicode)。

(所有这些都可以在http://psqlodbc.projects.postgresql.org/config.htmlfind)

请记住,尽pipe事实上从服务器返回的数据通常是紧凑的二进制格式,但是大数据集会给您带来痛苦。

我在MSA和WAN数据库方面的经验从未如此棒。 Access一直在决定从数据库中提取大量数据。 我已经成功的两种方法是将Access前端放在远程服务器上,并使用terminal服务器。 或者使用SQL Passthrough查询,以便显式控制传入/来自数据库服务器的内容。

要使Access应用程序在这种情况下运行良好,必须构build它以检索最小数据,并且可能对未绑定的表单效果最好,因为Access / Jet / ACE需要每隔一秒钟对远程数据库执行ping操作才能刷新数据以绑定的forms显示。 由于可以在Access中设置ODBC刷新间隔,所以在进行完全解除绑定之前,应该尝试一下,因为这意味着您错过了使用Access作为前端的90%的好处。

总的来说,我并不认为所描述的情况特别可行。 这将意味着尾巴摇摆的狗,与您的灾难失败者计划驾驶您的常规应用程序的devise。 我会说在远程数据库服务器附近的Windowsterminal服务器托pipe的应用程序将是一个更好的解决scheme,因为它将不需要对Access应用程序的重大更改。