【问题标题】:How to profile an openedge database?如何配置openge数据库?
【发布时间】:2015-06-26 04:09:55
【问题描述】:

是否有进度分析工具可以让我查看针对 OpenEdge 数据库执行的查询?

我们正在从 OpenEdge 数据库迁移到 SQL 数据库。为了正确映射数据,我们希望在 OpenEdge 数据库上运行某些应用程序报告,并查看正在执行哪些数据库查询来检索数据。

这可以通过某种进度分析工具(如 SQL Server 分析)实现吗?最好是免费的...

【问题讨论】:

  • 是商业应用吗?有许多“众所周知的”(至少 Progress 人都知道)商业应用程序是用 Progress 编写的,并且可能会有人可以帮助指导您。但首先他们需要知道应用程序是什么。

标签: profiling progress-4gl openedge


【解决方案1】:

Progress 是面向记录的,而不是像 SQL 那样面向集合的,因此您的报告不是单个查询或一组查询,它更有可能是大量记录查找与您认为的类似查询的操作相结合。

根据您运行的版本,有一种方法可以向客户端发送信号以查看其当前正在做什么,但是这样做几乎肯定不会为您提供足够的信息辨别“幕后”发生了什么。

长话短说,您的选择是获取Dataserver product,这样您就可以将 Progress 客户端附加到 SQL 数据库 - 这将使您能够使用 SQL 数据库而不会丢失 Progress 功能。第二种选择是获取程序源代码的副本,以了解报告的结构。

【讨论】:

  • 谢谢蒂姆,有人告诉我,我需要重新编译 ABL 才能通过数据服务器在 SQL 后端运行 - 对吗?
  • 我没有Dataserver产品的经验,所以不能有权威的说。我的猜测是,如果 DS 下的表结构与使用 Progress db 连接看到的不同,您需要重新编译。
【解决方案2】:

Tim 说的很对——如果没有源代码,查看查询不太可能为您提供很多洞察力。

尽管如此,还是有一些工具和功能可以提供有关查询的信息。可能对您的目的最有用的是指定类似于:

 -logentrytypes QryInfo -logginglevel 3 -clientlog "mylog.log"

在会话启动时。

【讨论】:

  • 我发现我需要将 -logginglevel 降低到 2 否则程序会崩溃。有什么想法吗?
  • 崩溃通常有与之相关的错误消息。这些错误消息通常为解决问题指明了方向。由于我不知道您遇到了什么错误,也不知道通过降低日志记录级别解决的任何广泛经历的错误(除了磁盘空间不足——但这似乎太明显了)我真的没有什么可提供的解决方案。
  • 当然,没有来源,崩溃没有任何细节可以帮助我。不用担心。
  • 您“崩溃”时没有错误消息?这似乎很奇怪。无论如何,如上所述和其他答案 - 如果没有来源,您可能真的不会走得太远。
  • 有一个异常报告,但它只包含 guid、内存指针和过程名称,没有英文或可读性。
【解决方案3】:

您可以使用会话触发器来识别任何程序所做的几乎所有事情,而无需修改或访问这些程序的源代码。设置它可能比您的目的更值得。我们围绕这个想法构建了一个测试系统。一大缺陷:无法为 CAN-FIND 触发触发器。

【讨论】:

  • 如果应用程序对您添加的事件使用触发器,添加会话触发器将干扰应用程序。最后定义的触发器优先,另一个不会执行。您需要添加的 FIND 触发器是不常用的 AFAIK,但在 OpenEdge V8 中,我们将其用于浏览器中的计算字段。
  • 好点。还值得注意的是,触发器可能不会完全按照您期望的方式触发 - 例如。 IIRC(我可能不会)在事务提交之前您不会看到创建/更新/删除触发器,这可能与相关的 CREATE 或 DELETE 语句相去甚远。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-19
  • 2017-03-25
  • 2019-09-24
  • 1970-01-01
  • 2020-05-30
  • 1970-01-01
相关资源
最近更新 更多