首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

权限查询解决方案

2012-01-22 
权限查询我们通常对某张表进行操作时,执行前都不进行检查是否具有权限.有的同志会说,数据库自己判断,是的

权限查询
我们通常对某张表进行操作时,执行前都不进行检查是否具有权限.
有的同志会说,数据库自己判断,是的这是没有问题的.
      我想做的友好点,对表操作前先判断是否具有权限,如果没有权限直接就让他不能操作,而不是提交了再提示没有权限.
      我用了这样的语句判断好象不对,请您们帮忙看看如何解决.

EXEC   sp_table_privileges   'bmb ', 'dbo '
go
查询结果是  
TABLE_QUALIFIERTABLE_OWNERTABLE_NAMEGRANTORGRANTEEPRIVILEGEIS_GRANTABLE
CzwlxtdbobmbdbodboDELETEYES
CzwlxtdbobmbdbodboINSERTYES
CzwlxtdbobmbdbodboREFERENCESYES
CzwlxtdbobmbdbodboSELECTYES
CzwlxtdbobmbdbodboUPDATEYES

从查询结果可以看出,当前登录用是对表bmb有插入权限,但执行插入语句就是显示没有权限。
insert   into   bmb(id,parent_id,bmdm,bmmc,bmzg,bz)   select   *     from   bmb
执行结果如下
服务器:   消息   229,级别   14,状态   5,行   1
拒绝了对对象   'bmb '(数据库   'Czwlxt ',所有者   'dbo ')的   INSERT   权限。

我的问题就是我怎样查询指定表的权限,又没有某张表插入权限,怎样判断。


[解决办法]
是如没该用户对该表没有任何权限就会产生异常


LZ 这样做会降低应用程式的效率,个人觉得不是好办法

看见现在很多项目都喜欢做一个权限表来控制,而不是用grant和deny控制,
毕竟程序的效率比较重要


如果LZ一定要这么做可以去看看sp_helprotect 存储过程的源码,然后自己写一个适合自己用的

select * from syscomments

热点排行