在IQ数据库中如何不加用户名前缀访问其他用户创建的表

3102阅读 0评论2012-11-15 lion_sybiq_127
分类:Sybase

   我们在开发应用时可能会遇到这样的问题:B用户可能需要访问A用户创建的表。大家可能要问,这种情况很常见呀,有什么可说的呢?
   其实在IQ数据库中,为了让B用户能够访问A用户创建的表,只需要A用户或DBA用户授予B用户相应的对象权限即可,比较简单。但是在缺省情况下,B用户访问时需要加上对象的属主名才行。在IQ中,如何能做到不加属主名就可访问呢?下面就结合一个例子来说明如何实现。
   先简单说明一下例子的情况:
     (1) 用户gdpuser创建了一个表叫做test1,然后往里面插入一些数据
     (2) 用户gdpuser把test1表上的所有访问权限授予用户armyuser
     (3) 在授权之后,用户armyuser就能够通过select * from gdpuser.test1查询表的数据了
     (4) 假设armyuser希望使用select * from test1这样的方式访问test1表。 
  
 
   下面是实现的具体步骤和方法:
 
 --1. 用DBA用户登录,执行下面语句创建用户
 sp_addlogin 'gdpuser','111111'
 grant resource to gdpuser
 sp_addlogin 'armyuser','111111'
 grant resource to armyuser
 
 --2. gdpuser 创建test1表
 create table test1(id int,name char(8))
 insert into test1 values(1,'aaaaaa')
 insert into test1 values(2,'bbbbbb')
 commit
 
 --3. gdpuser执行下面命令为armyuser授权
 grant all on test1 to armyuser
 
 --4. armyuser连接到iq server,执行select查询
 select * from test1   --报错, Table 'test1' not found
 select * from gdpuser.test1 --OK
 
 --5. 用DBA用户登录iq,执行下面的语句(这两句是关键)
 grant group to gdpuser
 grant membership in group gdpuser to armyuser
 
 --6. 用armyuser登录iq server,执行下面语句
 select * from test1  --这回执行成功,不用加用户前缀gdpuser了。
上一篇:如何获得IQ数据中表的创建时间和修改时间
下一篇:IQ中存储过程传递OUTPUT参数的方法