我需要在名为 THOMAS.XXXXXXX@XXX.XXX.XXX 的架构中撤销 PUBLIC 的 CREATEIN 权限,我连接到数据库并键入以下命令
这个用于验证 PUBLIC 在架构中是否具有创建权限
db2 "select schemaname,CREATEINAUTH from SYSCAT.SCHEMAAUTH where GRANTEE= 'PUBLIC'"
SCHEMANAME CREATEINAUTH
THOMAS.XXXXXXX@XXX.XXX.XXX Y
db2 revoke CREATEIN ON SCHEMA 'THOMAS.XXXXXXX@XXX.XXX.XXX' FROM PUBLIC
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0108N The name "COM" has the wrong number of qualifiers. SQLSTATE=42601
我也尝试使用",但得到了相同的结果
db2 "revoke CREATEIN ON SCHEMA THOMAS.XXXXXXX@XXX.XXX.XXX FROM PUBLIC"
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0108N The name "COM" has the wrong number of qualifiers. SQLSTATE=42601
试试这个:
db2 "revoke CREATEIN ON SCHEMA "THOMAS.XXXXXXX@XXX.XXX.XXX" FROM PUBLIC"
如果 db2 命令中存在操作系统命令行不接受的任何特殊字符,那么可以使用一些分隔符将该命令保存在文件中,然后从操作系统命令行运行该文件。
例如,创建一个文件名为"撤销"的文件.sql并在其中保留以下语句:
从公共中撤销在架构 THOMAS.XXXXXXX@XXX.XXX.XXX 上创建;
然后,您可以按如下方式执行此文件: DB2 -TVF 撤销.sql