【问题标题】:SQLCode -991 when trying to read from DB2 table尝试从 DB2 表中读取时的 SQLCode -991
【发布时间】:2018-07-05 06:03:19
【问题描述】:

我在 Cobol 中创建并编译了一个程序,但是在尝试使用 JCL 作业运行和测试它时,我在读取输出时收到此错误。 (程序编译,作业自行运行,没有错误)

SQLCODE = -991,错误:CALL ATTACH 无法建立隐式连接或打开 DB2。 RC1=0008 RC2=00F30034

SQLSTATE = 57015

现在我不明白为什么会出现这个错误。 DB2 数据库已启动并正在运行,我可以自己访问它。我的程序代码中也找不到错误。遗憾的是,谷歌搜索并没有为我提供明确的解决方案,我所能找到的只是程序的编译作业、运行它的 jcl 或 DB2 本身的问题。

【问题讨论】:

标签: sql db2 cobol jcl


【解决方案1】:

你绑定过吗!!!,错误提示计划不存在未授权
需要与您网站上的人员交谈关于编译/绑定过程以及谁 授权

如果您不了解 Mainframe Cobol/DB2 编译过程,请尝试 阅读this

基本上--->

                                 Cobol program 
    Cobol DB2 Program ---+---->  with no  SQL   ---> Compile ----->  Executable
                         |       but calls Plan  
                         |
                         +---->  DBRM (SQL)   -----> Bind   ------>  DB2 Plan    

计划需要DB2授权才能运行SQL!!! 您可能能够授权该计划,或者您可能需要查看 DBA 的

使用 DB2 COBOL,有一个 Co-Compiler(以前是一个预编译器)可以去除 SQL 并创建 DBRM(基本上是一个特殊的 SQL 过程)。

处理 DBRM (SQL) 并创建 DB2 访问计划的是 Bind


这在 java 等之后可能看起来很啰嗦。但是有一些优点

  • SQL 是提前处理的,而不是在程序运行时处理
  • 您可以随时检查 DB2 访问路径 - 执行之前/之后。对...有用 分析性能问题。
  • 从一次运行到下一次运行都使用相同的 DB2 访问路径。这将导致 相当可预测的运行时间。

【讨论】:

  • 谢谢。看来我得和负责绑定的人谈谈了。我的程序和另一个实际建立 DB2 连接并执行 SQL 的程序都不是我编译的。
  • 一些站点将创建绑定的责任交给开发人员,而在其他站点则由 DBA 负责。四处打听
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多