【问题标题】:What is the fastest way of pulling data from a foreign database从外国数据库中提取数据的最快方法是什么
【发布时间】:2016-02-01 09:32:36
【问题描述】:

我需要从存储在 MSSQL 数据库中的单个表中提取数据。然后数据被存储在 AX 中的临时表中,并根据业务逻辑从那里进行处理。

性能是这个项目的一个关键因素。

现在我正在研究使用 X++ 代码从 MSSQL 数据库中检索数据的可能性,发现以下博客:

Connecting to Databases through X++

基本上有不同的方法可以用于这项工作:

  • ODBC - 开放式数据库连接
  • OLEDB - 对象链接和嵌入
  • ADO - ActiveX 数据对象
  • 连接类

现在我希望有人能提供意见,说明哪个更可取以及为什么(尤其是在性能方面)。

感谢任何输入。

【问题讨论】:

    标签: axapta dynamics-ax-2012 x++


    【解决方案1】:

    连接类不是一个有效的选项,因为它连接到 AX 所连接的同一个数据库,所以您的选择归结为 ODBC、OLEDB 和 ADO/.NET 方式。

    我个人会选择 .NET 集成方式(在您的链接中称为 OleDB),但会使用 System.Data.SqlClient 而不是 System.Data.OleDb,因为它本身是用 .NET 编写的。如果你的代码被编译成 CIL,那应该会给你最好的结果。

    无论您选择何种检索选项,您都应该真正构建一个记录插入列表并执行基于集合的插入,而不是对optimize insert performance

    【讨论】:

    • 我使用 OLEDB 实现了这个任务。还查看了DIXF。最后我决定使用 OLEDB 并实现 SysOperation 框架,因此代码可以作为批处理作业在服务器上执行。看起来工作量减少了,对正在发生的事情有了更多的控制。该方案性能完全满足项目要求。
    【解决方案2】:

    这听起来像是 Ax 2012 中 Data Import/Export framework 的工作。

    【讨论】:

    • 感谢您的回复。这也是非常好的输入。我没有想过这个方向。做一些谷歌搜索,我找到了带有 ODBC ax.help.dynamics.com/en/wiki/… 的 DIXF 的演练。我目前不清楚使用 DIXF 与通过在类中实现连接(如 ODBC 或 OLEDB)从数据库导入相比有哪些优点/缺点。
    • 您好,我赞成您的回答,因为这是一个非常好的选择,我没有考虑过。您能否详细说明一下这是如何工作的?也许这对我和 OP 来说已经足够了,但是更详细的答案可能会让其他人相信它为什么有用并且是一个好的解决方案(考虑到 AX 版本,可能比我的更好)。
    猜你喜欢
    • 1970-01-01
    • 2010-10-01
    • 2019-11-22
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 2020-01-16
    相关资源
    最近更新 更多