结构化查询语言调试器的制造方法

文档序号:9631480阅读:313来源:国知局
结构化查询语言调试器的制造方法
【技术领域】
[0001] 本公开涉及结构化查询语言调试器。
【背景技术】
[0002] 结构化查询语言(SQL)可以是独立的(单独的)SQL语句、数据库过程(例如,存储 的过程)的一部分、或者动态或静态嵌入(即,包含)在任何高级编程语言(例如:C/C++、 JAVA、COBOL和ABAP)中。这些独立的、数据库过程的一部分、或嵌入的SQL语句可以是非 常复杂的,并且可以包含例如数百行代码,包括多个数据库表/视图、多个子(嵌套的)查 询、和/或过滤器的复杂接合(join)。如果没有调试这样的SQL语句的能力,则很难开发 和维护它们并且结果是很差的用户体验,和/或引入错误,这可能导致用户更高的总体拥 有成本。数据库过程调试器通常支持调试(例如,检测和校正)数据库过程的逻辑部分,但 是将SQL语句(自然主导数据库过程的一部分)视为没有介入能力的原子步骤(例如,黑 盒)一一即,其中用户可以查看SQL语句的最终结果但是无法了解被用于访问或修改信息 的与SQL语句相关联的子步骤的每个有序集合的结果(中间结果)。因为数据库过程主体 可以包括非常复杂的SQL语句,所以典型的数据库过程调试器可能无用,因为与SQL语句本 身相比,关于所包括的SQL语句的逻辑可能相对简单,或者甚至根本不具备逻辑。如果没有 调试所包括的SQL语句的能力,则数据库过程可能很难调试。由于在商业应用中使用海量 数据库的不断增长的趋势,所以这个SQL调试在如今成为更加关键的问题。

【发明内容】

[0003] 本公开涉及用于调试结构化查询语言(SQL)语句的计算机实现的方法、计算机可 读介质和计算机系统。一种计算机实现的方法包括:接收获取调试运行计划的请求,调试运 行计划考虑不同的结构化查询语言(SQL)运行优化级别并且包括对于SQL语句的映射;接 收初始化SQL语句的调试过程的请求;验证接收到的和附加的过滤标准,过滤标准使用SQL 调试通道来提供;设置SQL语句断点;触发SQL语句;发送SQL过程被附加到相关联的调试 器并且准备好外部运行控制的通知;当到达与SQL过程相关联的特定断点时,提供状态细 节和中间结果;提供改变过程状态和影响过程的能力;以及在到达被触发的SQL语句的运 行的末尾之后,提供SQL最终运行响应。
[0004] 这个方面的其它实现方式包括相应计算机系统、装置、和记录在一个或多个计算 机存储设备上的计算机程序,每一个都被配置成执行所述方法的动作。一个或多个计算机 的系统可以配置成通过拥有安装在系统上、在操作时使系统执行动作的软件、固件、硬件或 者软件、固件或硬件的组合来执行特定操作或动作。一个或多个计算机程序可以被配置成 通过包括指令来执行特定操作或动作,所述指令在被数据处理装置运行时使该装置执行动 作。
[0005] 前述和其它实现方式中的每一个可选地可以单独地或组合地包括如下特征中的 一个或多个:
[0006] 可与一般实现方式结合的第一方面,包括基于调试运行计划加载所选SQL语句的 SQL调试视图。
[0007] 可与任何一个先前的方面结合的第二方面,其中,所述调试过程与多个上下文相 关联。
[0008] 可与任何一个先前的方面结合的第三方面,包括:查看中间结果;以及基于中间 结果、所述多个上下文中的上下文、数据存储中的数据表、以及影响被调试的过程运行的其 余部分的上下文变化来估计与SQL过程相关联的表述。
[0009] 可与任何一个先前的方面结合的第四方面,其中,只要所述调试过程是活动的,新 附加的过滤标准就覆盖先前的过滤标准。
[0010] 可与任何一个先前的方面结合的第五方面,包括初始化查询引擎以使用调试运行 计划和过滤标准来运行SQL语句。
[0011] 可与任何一个先前的方面结合的第六方面,包括当到达与SQL语句相关联的特点 断点时,提供中断通知。
[0012] 描述在本说明书中的主题可以在特定实现方式中实现,以便实现如下优点中的一 个或多个。首先,SQL调试器允许到SQL语句的构建块的介入功能。这允许用户在运行期间 以逐步的模式控制SQL语句的处理、值的修改等等。第二,SQL调试器可以提供与用于SQL 语句运行的当前上下文的每个步骤相关的详细信息,例如,变量值、选择项值、在每一步演 变的查询结果、查询内的表述的结果等等。例如,在SQL语句结果不是用户所预期那样(例 如,不正确的接合(JOIN)或其它条件、错误输入的表述等等)的情况下,用户可以利用SQL 调试能力看到在哪里发生错误,并且可以集中在该代码区域以校正问题。根据用户偏好,在 SQL语句的运行期间的中间操作的可视化可以是文本的(并排)和/或图形的。在某些情 况下,所提供的SQL调试能力也可以有助于由数据库管理员使用的独立的SQL语句(S卩,不 是数据库过程的一部分)。独立的SQL语句通常被构建以用于临时的(特别的)原因(例 如,查询在过去的几个小时的期间具有最高操作活动的用户量等)。第三,SQL调试器可以 被用于调试SQL语句,与原始来源无关(例如,用于嵌入式SQL)。第四,SQL调试器可以被 用于调试SQL语句,甚至考虑改变由查询引擎执行的SQL优化级别。第五,虽然SQL调试器 的主要目标是逻辑方面(即,证明逻辑正确),但是所提供的过程的透明度增加了用户在改 进数据库模型和性能方面的能力。其它优点对本领域技术人员来说将是显而易见的。
[0013] 本说明书的主题的一个或多个实现方式的细节记载在附图和下面的描述中。该主 题的其它特征、方面和优点将从该描述、图和权利要求书中变得明显。
【附图说明】
[0014] 图1是图示根据实现方式的用于调试结构化查询语言(SQL)语句的示例分布式计 算系统(EDCS)的框图。
[0015] 图2A和图2B表示根据实现方式的简单的示例SQL运行计划。
[0016] 图2C是表示显示示例图形化SQL运行计划的示例用户界面的框图。
[0017] 图2D是表示根据实现方式的用于显示源代码和图形化SQL运行计划两者的并排 用户界面的示例的框图。
[0018] 图3是根据实现方式的允许远程调试SQL语句的示例客户端/服务器的框图。
[0019] 图4是图示根据实现方式的用于调试SQL语句的图1的EDCS的附加组件的框图。
[0020] 图5是图示根据实现方式的SQL处理器的组件(图4的EDCS的详细组件)的详 细视图的框图。
[0021] 图6是根据实现方式的用于调试结构化查询语言(SQL)语句的方法的序列图。
[0022] 图7是根据实现方式的集成的SQL调试器的框图。
[0023] 在各图中,相同的参考标记和标号指示相同元件。
【具体实施方式】
[0024] 给出如下详细描述以使本领域任何技术人员能够做出、使用和/或实践所公开的 主题,并且如下详细描述是在一个或多个特定实现方式的背景下提供的。对本领域技术人 员来说,对公开的实现方式的各种修改将是非常明显的,并且本文定义的一般原理可以应 用于其它实现方式和应用而不脱离本公开的范围。因此,本公开不打算限制描述和/或图 示的实现方式,而是符合与本文公开的原理和特征一致的最宽的范围。
[0025] 结构化查询语言(SQL)可以是独立的(单独的)SQL语句、数据库过程(例如,存 储过程)的一部分、或者动态或静态嵌入(即,包含)在任何高级编程语言(例如:c/c++、 JAVA、COBOL和ABAP)中。这些独立的、数据库过程的一部分、或嵌入的SQL语句可以是非 常复杂的,并且可以包含例如数百行代码,包括多个数据库表、多个子(嵌套的)查询、和/ 或过滤器的复杂接合。如果没有调试这样的SQL语句的能力,则很难开发和维护它们并且 结果是很差的用户体验,和/或引入错误,这可能导致用户更高的总体拥有成本。
[0026] 数据库过程(例如,存储过程)的调试器通常支持调试(例如,检测和校正)数据 库过程的逻辑部分,但是将SQL语句(自然主导数据库过程的一部分)视为没有介入能力 的原子步骤(例如,黑盒)一一即,用户可以查看SQL语句的最终结果但是无法了解被用于 访问或修改信息的与SQL语句相关联的子步骤的每个有序集合的结果(中间结果)。因为 数据库过程主体可以包括非常复杂的SQL语句,所以典型的数据库过程调试器可能相对无 用,因为与SQL语句本身相比,关于所包括的SQL语句的逻辑可能相对简单,或者甚至根本 不具备逻辑。例如:
[0027]
[0028]
[0029] 在没有调试所包含的SQL语句(例如,"ComplexSQL〈X>Statement")的能力的情 况下,数据库过程可能难以调试,导致差的用户体验,和/或引入错误,这可能导致用户更 高的总体拥有成本(TC0)。在上面的示例中,存储过程调试器是非常有限的,没有能力调试 SQL,因为只有复杂的SQL语句结果可以被分析,而不是例如结果是如何生成的。
[0030] 用户可以被认为是测试、分析、检查和/或开发作为应用的一部分的SQL或 独立的SQL的任何人,例如软件开发人员、数据库管理员(DBA)、商务智能(business intelligence,BI)专家、质量保证(QA)专家等等。
[0031] SQL是用于构建查询以管理关系型数据库(DBMS)中的数据的被设立的专用编 程语言。用于插入、更新和查询数据的SQL命令/语句(也叫作数据操纵语言(Data ManipulationLanguage,DML)命令)可能是非常复杂的,并且可能很难编写并证明是正确 的。注意,其它SQL语句,诸如DDL(DataDefinitionLanguage,数据定义语言)、DCL(Date ControlLanguage,数据控制语言)和TCL(TransactionControl,交易控制)语句,通常 不经常改变,并且不包含复杂逻辑。然而,在一些实现方式中,所描述的构思也可以应用到 DDL、DCL和 / 或TCL。
[0032] SQL语句被编译成单个运行计划(见图2A和图2B)。在一些实现方式中,数据库 存储过程可以包含针对通常被包括作为存储过程的主导嵌入部分的SQL的专有扩展。
[0033] 像C++、PYTH0N和/或JAVA那样的传统语言的编程环境提供调试工具(调试器), 其被开发人员(例如,用户)用于检查他们的程序、发现错误和/或证明正确的运行。在没 有SQL调试器的情况下,用户如今被迫使用原始的方法来调试SQL语句。由于在商业应用 中使用海量数据库的不断增长的趋势,因此SQL调试工具的不可用性是关键问题。
[0034] SQL调试器是支持SQL调试的用户工具。SQL调试器通常由两部分组成:客户端方 SQL调试器和服务器方SQL调试器。在没有SQL调试功能的情况下,用户通常忙于费时和繁 琐的变通方法(workaround)以便检测到错误并校正SQL语句。常见的方法是:
[0035] ?运行计划(文本或图形视图)调查。
[0036] ?将SQL语句拆分为子SQL语句(包括省略特定部分,诸如分组、排序字段和过 滤)并单独运行
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1