2

我的 DB2 数据库中有一个用户,我想授予对给定模式的所有表和视图的选择权限。关于如何将其作为一个 SQL 语句执行的任何想法?

4

1 回答 1

7

为了将选择授予给定用户,您必须为给定模式的每个表和视图“生成”句子。您可以通过 CLP 使用如下查询来执行此操作:

db2 -x "select 'grant select on table ' || rtrim(tabschema) || '.' || rtrim(tabname) || ' to user JOHN_DOE' from syscat.tables where tabschema like 'FOO%' and (type = 'T' or type = 'V')" | db2 +p -tv

此命令行将为用户 JOHN_DOE 生成以 FOO 开头的任何模式的所有表 (T) 和视图 (V) 的授权。

如果你有很多表,输出会很大,内部缓冲区会被填满。通过为一组较小的表生成授权来重新发出该命令。

如果您不确定要执行什么,请发出不带最后部分的上一个命令 (| db2 +p -tv),这会将命令写入标准输出。但是,这部分是最重要的,因为它执行生成的输出。

更多详情,请查看信息中心或我的博客http://angocadb2.blogspot.com/2011/12/ejecutar-la-salida-de-un-query-en-clp.html(西班牙语)

于 2012-09-22T04:04:09.467 回答