最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

SAP HANA中调试存储过程

[复制链接]
跳转到指定楼层
楼主
发表于 2014-9-29 17:05:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

  对于使用SQLScript 的存储过程,SAP HANA提供了对存储过程的调试功能,即debug功能。当对一个存储过程进行调试时,这个存储过程中的代码将被顺序执行,而并不是按照实际的可能情况并行执行。因此在对存储过程进行调试时,只是为了验证逻辑的正确性,查看执行过程中变量的值,而并不能保证调试中的性能。


相关权限

     要对一个存储过程进行调试的用户必须具有相关的权限,才可以进行调试。所以必须先赋予相应的权限给此用户。

     对于进行调试 的用户,首先要有对此存储过程的CALL的权限,以及对存储过程所访问的对象(table,view)的SELECT的权限。然后,要有对此存储过程的DEBUG的权限。

     在Object Privileges下选择相应的procedure,勾选DEBUG的权限。或者选择相应schema下DEBUG的权限,则可以对此schema下所有procedure或者calculation view 的DEBUG的权限。


     同样,也可以使用SQL语句进行授权。



  • GRANT DEBUG ON <procedure_name>  TO <user_name>;  
  • GRANT DEBUG ON SCHEMA <schema_name> TO <user_name>;  


调试design-time procedure

      对于在一个共享的project中的存储过程,你可以进行调试和分析。即对workspace中已经被提交和激活的一个.hdbprocedure或者.procedure文件进行调试。这是从HANA SPS6版本开始提出的功能。

     这样建立存储过程是创建相关的.hdbprocedure或者.procedure文件。这样的存储过程,实现方式和在catalog中建立的存储过程相同,可以使用catalog中的表格和视图,但必须提前赋予相关的权限。同样,当这个存储过程被激活(activate)后,会在指定的schema下,创建对应的存储过程,其命名方式如下<project_name>.<folder_name>::<procedure_name>。


调试catalog procedure

     同样,你也可以调试和分析catalog中任意schema中的存储过程。即,包含所有runtime procedure,AFL generated procedure,design-time procedure所对应的的存储过程,或者是procedure template instance。这个功能是在HANA SPS7中新提出的功能。


调试步骤

对于catalog procedure:

     切换到SAP HANA Development的perspective下,在Systems标签下找到要调试的存储过程。双击这个存储过程,或者右键选择“Open with SAP HANA Stored Procedure viewer”,则在SAP HANA Stored Procedure viewer中显示这个存储过程的定义。


对于design-time procedure:

     在SAP HANA Development的perspective下,可以在Project Explorer标签下双击打开要调试的存储过程的对应文件。则在Editor中打开这个文件,显示存储过程的定义。


2.切换到Debug的perspective下,则可以在想要设置断点的语句处,点击左侧,设置断点。如下图所示:


     则在Breakpoints的标签下,可以查看到当前所设置的断点。可以查看断点所在的行,删除一个或多个断点,并且可以看到每个断点当前的状态:pending,valid 或invalid。


3.创建一个新的debug configuration来启动一个新的调试会话。

     在工具栏中点击,并选择“Debug Configurations”。为其命名,在“Procedure to Debug”中,选择“Catalog schema”或者“Local projects”,并选中所要调试的存储过程。点击“Apply”来保存设置。

     与此同时,可以在Input Parameters的标签下对于每个输入参数赋值。对于标量类型的输入参数,可以赋予一个具体的值。对于表类型的输入参数,则必须填入一个catalog中存在的物理表格。


     在Advanced标签下,还可以选择调试的执行方式:

  • All procedures in the call stack :所有嵌套的存储过程都以debug模式编译。
  • Procedures with breakpoints:只有有断点的存储过程以debug模式编译。


4.选择“Debug”来开始调试。则这个存储过程会在第一个断点处中止,点击或F8来跳到下一个断点。

     在Debug标签下可以看到当前调试会话的状态。

  

     并且可以在“Variable”标签下,查看当前断点处变量的值。对于表变量,可以右击选择“Open Data Preview”来预览数据。


调试 external session procedure

     同样,也可以分析和调试一个外部应用所调用的存储过程。对于这个存储过程已经提前设置好断点,而且要知道调用这个存储过程的connection ID,HANA用户或者连接到HANA数据库并调用存储过程的HANA用户和外部应用的用户。

     用来调试的用户,除了拥有相关的DEBUG权限以外。还要在“Privilege on Users”的标签处,添加权限,勾选“ATTACH DEBUGGER”。则这个用户可以连接到其他用户的会话中,从而可以调试存储过程和查看数据。


   调试外部应用调用的存储 过程的debug configuration与其他情况的调试不同。如图,在“General”标签下,选择“Debug an external session”。选定要调试的“SAP HANA System”。

  • Set filter attribute

     如果已知外部连接所使用的HANA用户,则可以使用这个方式。同时,也可以提供外部应用的用户。这是情况下,debug session开始前,调用存储过程的外部连接不一定开始建立。


  • Select a connection after initiating the debugger

     如果知道外部应用连接到HANA数据库的connection ID,则可以使用这种方式。这种情况下,你可以在debug session开始后,选定自己指定的某个连接。因此,在debug session开始前,调用存储过程的外部连接必须已经建立。


     则在开始debug session后,在外部应用中触发存储过程的调用。

     与其他调试请况相同,这时存储过程会在第一个断点处中止。可以查看当前调试会话的状态,变量值等信息。可以使用或F8跳到下一个断点处。调试的方法与上面介绍的相同。



楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-30 01:22

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表