-1

当我运行时:

select * from sys.server_role_members ;

得到以下错误:

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

1 回答 1

2

由于您似乎是初学者,因此您需要知道,在寻求 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.ROLESSYSCAT.ROLEAUTH

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

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

于 2018-09-05T08:45:51.920 回答