【问题标题】:Why I got error SQLCODE=-204, SQLSTATE=42704, DRIVER=4.18.60 in execuing below query为什么在执行以下查询时出现错误 SQLCODE=-204, SQLSTATE=42704, DRIVER=4.18.60
【发布时间】:2019-02-10 04:01:15
【问题描述】:

当我跑步时:

select * from sys.server_role_members ;

出现以下错误:

SQLCODE=-204, SQLSTATE=42704, DRIVER=4.18.60

【问题讨论】:

标签: db2 ibm-data-studio


【解决方案1】:

由于您似乎是初学者,因此您需要知道,在寻求 Db2 方面的帮助时,务必始终编写您的 Db2 版本和 Db2-server 操作系统(Z/OS、i-Series(以前称为AS/400),或 Linux/Unix/Windows)。那是因为三个平台的能力不同,有时SQL也不一样,目录也不一样。

您收到该错误是因为您的查询仅适用于 Microsoft SQL-Server 数据库。

您的查询无法在 Db2 上运行,因为 Db2 不允许用户创建的模式名称以 SYS 开头。一些 IBM 创建的模式名称可以以 SYS 开头,例如 SYSIBM 和 SYSCAT,但它们是为目录保留的,它们是由 Db2 在数据库创建期间创建的。

Db2 具有 SYSIBM.SYSROLEAUTH 和 SYSIBM.SYSROLES 等表,以及(在 Linux/Unix/Windows 上)SYSCAT 模式中的一组视图。

例如,如果您的 Db2 服务器在 Linux/Unix/Windows 上运行,那么这些视图存在 SYSCAT.ROLESSYSCAT.ROLEAUTH

另外,Db2 for Linux/Unix/Windows 提供了表函数AUTH_LIST_AUTHORITIES_FOR_AUTHID,非常有用。

如果您的 Db2 服务器在 i 系列上运行,则存在 不同 表/视图。这就是您需要知道您正在使用哪个 Db2 平台并将其写在您的问题中的原因。

【讨论】:

  • 对于以下查询,我也遇到了同样的错误。select * from SYSIBM.SYSROLEAUTH;从 SYSIBM.SYSROLES 中选择 *;从 SYSPROC.AUTH_LIST_AUTHORITIES_FOR_AUTHID 中选择 *;
猜你喜欢
  • 2014-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多