IBM Db2原生存储过程创建报-567重绑授权错误问题咨询
DB2 存储过程创建-567 Rebind授权错误解决方案
报错原文
创建存储过程返回SQLCODE: -567, SQLSTATE:42591;DBAXXYY.SP_SAMP: 0: REBIND AUTHORIZATION ERROR USING DBAXXYY AUTHORITY PACKAGE = LOCATION.DBAXXYY.SP_SAMP.(V1) PRIVILEGE = CREATE IN;SQLCODE=-567, SQLSTATE=42501, DRIVER=4.18.60,DBAXXYY.SP_SAMP部署失败,回滚完成。
一、用户缺失的权限类型
根据报错提示PRIVILEGE = CREATE IN,用户核心缺失的是DBAXXYY模式下的CREATEIN权限,此前授予的BINDADD权限仅支持绑定新增包,不支持在指定模式下创建对象,因此未解决问题。完整缺失权限清单如下:
- DBAXXYY模式的
CREATEIN权限:创建存储过程时需要在对应模式下生成关联系统包,缺少该权限会直接触发-567授权错误 - DBAXXYY模式的
CREATE_PROCEDURE权限:SQL原生存储过程的创建专属权限 - 可选权限:如果创建的是外部存储过程,还需要
CREATE_EXTERNAL_ROUTINE数据库级权限
二、同ID下的权限差异说明
使用相同授权ID可正常创建、该用户无法创建,核心差异来自3个维度:
- 权限继承规则差异:正常创建的账号可能通过角色/用户组继承了DBAXXYY模式的CREATEIN权限,而该用户的登录身份未关联对应角色,或者IBM Data Studio的JDBC连接默认关闭了组权限解析,导致继承的权限未生效
- 高阶权限差异:正常创建的账号可能持有SYSADM、DBADM这类高阶管理权限,默认拥有所有模式的创建权限,无需单独授予模式级CREATEIN权限
- 会话权限差异:正常创建的操作可能在已启用特殊权限的会话中执行,而该用户的会话未加载对应权限配置
三、所需执行的授权语句
使用具有DBADM或SYSADM权限的账号执行以下授权即可:
-- 授予DBAXXYY模式下的对象创建权限,解决CREATE IN权限缺失问题 GRANT CREATEIN ON SCHEMA DBAXXYY TO DBAXXYY; -- 授予SQL存储过程创建权限 GRANT CREATE_PROCEDURE ON SCHEMA DBAXXYY TO DBAXXYY; -- 授予对应模式下的包绑定权限,兼容不同版本DB2的包自动生成逻辑 GRANT BIND ON PACKAGE DBAXXYY.* TO DBAXXYY; -- 若创建外部存储过程,额外执行以下语句 -- GRANT CREATE_EXTERNAL_ROUTINE ON DATABASE TO DBAXXYY; -- 若需要允许该账号将上述权限授予其他用户,在每条语句末尾加 WITH GRANT OPTION
授权完成后,需要让该用户重启IBM Data Studio的数据库连接,重新触发权限校验即可正常创建存储过程。
内容的提问来源于stack exchange,提问作者Sudarsan Rajagopalan
相关产品推荐
相关产品推荐

