【问题标题】:Reducing the scope of SQL queries on a NAVISION 2009 R2 report缩小 NAVISION 2009 R2 报告上的 SQL 查询范围
【发布时间】:2019-09-11 16:44:04
【问题描述】:

在 NAVISION 2009 R2 中,我有一份在 3 个表上进行迭代的报告:

  • 服务标题:82 266 项 / 120512 Ko
  • 服务热线 : 311 117 items / 720 352 Ko
  • 服务分类帐条目:2 293 754 项 / 2 453 568 Ko

我正在导出大约 10 000 个标题和 50 000 行。

SQL Server Profiler,我看到 NAVISION 使:

  • 关于标题的 1 个查询

    SELECT * FROM "database_name"."dbo"."company_name$Service Header"

  • 10 000 行查询(使用 DataItemLink 属性)

    SELECT * FROM "database_name"."dbo"."company_name$Service Line"

  • 50 000 对分类帐条目的查询(使用 SETRANGE + SETFILTER 过程)

    SELECT * FROM "database_name"."dbo"."company_name$Service Line"

由于 Service Ledger 条目表的大小,这些查询每次大约需要 300 毫秒(根据 StmtCompleted 事件),因此总共超过 4 小时

由于我使用 Ledger 条目表中数量有限的属性,

有没有办法避免 NAVISION 默认发出 SELECT * 请求,而是列出必要的属性?

【问题讨论】:

    标签: sql microsoft-dynamics navision dynamics-business-central


    【解决方案1】:

    我认为没有办法限制 Nav 获取的字段,但这是一个实验性的想法,我曾经将它用于集成项目,它是这样的:

    1. 在 SQL Server 中为每个表创建一个视图(甚至是组合视图)
    2. 使用导航对象名称样式保存视图:[CompanyName]$[ViewNAme]
    3. 在 Nav 中创建一个表并将属性“LinkedObject”设置为 true
    4. 使用与视图完全相同的名称保存表,但不带公司名称:ViewName
    5. 将视图中具有相同名称的所需字段添加到导航表并保存。

    现在在您的报告中使用这些表格(“LinkedObject - 视图”)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      相关资源
      最近更新 更多