当我运行时:
select * from sys.server_role_members ;
得到以下错误:
SQLCODE=-204, SQLSTATE=42704, DRIVER=4.18.60
当我运行时:
select * from sys.server_role_members ;
得到以下错误:
SQLCODE=-204, SQLSTATE=42704, DRIVER=4.18.60
由于您似乎是初学者,因此您需要知道,在寻求 Db2 方面的帮助时,务必始终编写您的 Db2 版本和 Db2 服务器操作系统(Z/OS、i 系列(以前称为 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.ROLES 和SYSCAT.ROLEAUTH。
此外,Db2 for Linux/Unix/Windows 提供了 非常有用的表函数AUTH_LIST_AUTHORITIES_FOR_AUTHID 。
如果您的 Db2 服务器在 i 系列上运行,则存在不同的表/视图。这就是您需要知道您正在使用哪个Db2 平台并将其写在您的问题中的原因。