QODBC SELECT 需要 > 15 分钟才能返回结果

Posted

技术标签:

【中文标题】QODBC SELECT 需要 > 15 分钟才能返回结果【英文标题】:QODBC SELECT taking > 15 minutes to return results 【发布时间】:2014-12-20 21:30:37 【问题描述】:

我对使用 QODBC 进行 QuickBooks 报告非常陌生。我准备的第一个 SELECT 查询基本上在 ReceivePayment 表中标记了具有现有未使用付款的客户,并针对同一客户的剩余余额查询发票。输出是(或应该是)按 CustomerRefFullName 分组的客户列表,第 2 列中包含未使用付款的总和,以及未结发票的剩余总余额。

这是一个相当简单的查询。当我将表作为静态表导入 MS Access 时,查询速度如预期的那样快。但是,当我对链接表运行查询时,需要 15 分钟以上才能生成结果。

这不应该发生。这是 MS Access 配置错误的问题吗?我遗漏或不知道的与 QODBC 配置相关的其他内容?任何帮助将不胜感激。

【问题讨论】:

您可能对文章here 感兴趣,但请注意:写这篇文章的人似乎对 Access 相当无知。 发布您的查询、表结构和每个中的行数 @GordThompson,那篇关于总结的文章。赢家,鸡肉晚餐。 【参考方案1】:

我想通知您,当您在 Access 和运行查询中导入 QuickBooks 数据时,显然它会执行得更快,因为所有数据都在本地 MS Access 表(离线)中可用。但是当您从链接表执行查询时,QODBC 正在从 QuickBooks 中获取数据。 QODBC 是一个使用 QuickBooks SDK 的 ODBC 驱动程序。

QODBC 通过 ODBC 接口接受来自应用程序的 SQL 命令,然后将这些调用转换为导航 XML 命令到 QuickBooks 会计 DBMS,并返回符合查询结果的记录集。此驱动程序不是客户端/服务器产品,而是在运行时直接与 QuickBooks 应用程序通信。 QuickBooks 是一个平面文件数据库,此驱动不会将其更改为关系型数据库,因此在使用此驱动进行开发时请记住这一点。

QODBC 充当 Intuit SDK 的“包装器”,因此客户最终可以使用标准数据库工具获取其 QuickBooks 数据;加快开发时间。

请记住,QODBC 不是数据库工具,而是翻译工具。您请求的每项事务都必须通过大型复杂的 XML 事务进行翻译并传达给 QuickBooks。

QuickBooks 应用层需要处理这些 XML 请求。 Records 的数量越大,XML 请求就越长,因此 QuickBooks 可能需要更多的时间和内存来处理更长的请求。

我建议您通过 QODBC 设置屏幕->消息窗口->选择“显示驱动程序状态”和“显示优化器状态”选项启用 QODBC 状态面板。

那么下次运行查询时,如果看到“Waiting for QuickBooks”,则表示 QuickBooks 正在花时间处理请求。屏幕右下角将有一个状态面板,将显示一个窗口,其中包含有关 QODBC 正在工作的信息。请注意QODBC花费时间最多或卡住的步骤并与我们分享。

我还建议你尝试在 VB Demo 上执行以下命令,看看它可以解决问题:

SP_OPTIMIZEFULLSYNC ALL

此命令会将一些数据带到本地缓存以提高查询的检索性能。我想建议你完全运行上面的命令。以上命令可能需要一些时间,具体取决于您在 QuickBooks 中的记录。可能需要 2-5 小时或更长时间,具体取决于 QuickBooks 公司文件中的记录数量。请让这个命令完全运行,不要杀死这个命令。建议不要在构建优化器文件时杀死/关闭应用程序。

参考: How to execute SP_OPTIMIZEUPDATESYNC or SP_OPTIMIZEFULLSYNC for Selected Tables

如果您仍然遇到问题,我恳请您通过以下链接向 QODBC 技术支持部门提出支持请求并提供所需信息:

http://support.qodbc.com

同时分享您所面临问题的更多信息,以便我们快速定位问题。

我们可能需要以下信息,请在回复工单时附上下列文件。

1) QODBC 设置屏幕截图 --> 关于(开始>>所有程序>> QODBC Driver for use with QuickBooks>> QODBC 设置屏幕>> 关于选项卡) 2)您面临的问题的屏幕截图。 3) 分享 QuickBooks 版本详情:在 QuickBooks UI 上按 f2 并分享屏幕截图。 4) 共享您正在使用的 SQL 语句。 以文本格式将整个日志文件作为附件共享 5) QODBC 设置屏幕 --> 消息 --> 查看 QODBC 消息 6) QODBC 设置屏幕 --> 消息 --> 查看 SDK 消息

【讨论】:

哇。这进一步澄清了。我将运行优化命令并报告结果。

以上是关于QODBC SELECT 需要 > 15 分钟才能返回结果的主要内容,如果未能解决你的问题,请参考以下文章

努力在 SQL 查询 C# QODBC 中转义单引号

在 VBA 中使用 KDB+/qodbc.dll 的 ADO

cx_freeze:未加载 QODBC 驱动程序

Excel 查询 (QODBC / QuickBooks) 问题:是不是可以查询 sp_report(在 excel 中)并有 2 组金额列?

QODBC连接字符串

怎样用mysql语句实现分页