当前位置: 代码迷 >> Sql Server >> 【请教】SQL Server 行级权限控制
  详细解决方案

【请教】SQL Server 行级权限控制

热度:98   发布时间:2016-04-24 10:34:09.0
【讨教】SQL Server 行级权限控制
本帖最后由 xxzxwsx 于 2014-06-11 10:42:29 编辑
根据我目前的认识,SQL Server 没有直接的行级权限控制,需要通过视图、存储过程等曲线解决,很不方便,也很难完美。
但是实践中经常有这样的需求,比如业务员可以看到其他业务员的单据,但是只能修改自己的单据;再比如某个时间点之前的历史单据只能查询不能修改等等。
我是希望 SQL Server 未来版本能在行级权限控制上有突破,大家觉得呢?
还是我本来的认识就有问题?
求补课
------解决方案--------------------
1)首先这个行级控制,个人觉得不适合通过SQLServer的login来实现,试想,即使有这个功能,如果有上万个业务员,你要建立
上万个SQLServer Login吗?不觉得这更加难以维护吗
2)比如业务员可以看到其他业务员的单据,但是只能修改自己的单据;再比如某个时间点之前的历史单据只能查询不能修改等等。
这是修改前或者修改时候通过判断去解决,这也是常用的思路,没什么繁琐的

------解决方案--------------------
这些是程序上的事     
------解决方案--------------------
3)其它数据库也很少有行级权限控制控制吧。mysql也是到列级别的
------解决方案--------------------
数据库做增删改查就好了 具体怎么增加怎么修改 程序上操作
------解决方案--------------------
SQL SERVER数据库确实没有做到行级。
上次看见一个帖子 用锁去控制。忘记在哪里了。楼主可以去找找。
------解决方案--------------------
根据集合论,不应该单独操作某行,而应该一个“集合”操作,并且行的粒度太细了,控制这个并不容易。除非全球微软的大客户很多人都有这样的建议,并且实际使用也的确有这种要求,否则微软不会加进去的。
------解决方案--------------------
楼主其实可以想想,问什么现在权限系统广为应用,而几乎不使用数据库角色方式来控制,其中第一点当然是可扩展性和可维护性,对于数据库角色方式来说,没有可扩展性,因为永远只是在创建新的登陆角色而已,从可维护性来说,哪怕再小的区别也得创建新的登陆角色,维护相当困难。第二点,对于应用程序而言,在登陆前是不知道用户出于什么级别,必须先用一般login获得所处角色,然后在更改login为当前角色,无形间增加了应用程序开销。再者,如果一人身兼多职,读取数据时就产生了麻烦,你可以选择继续增加login,但这同时也继续增加你的维护难度。
反过来说,通过权限表和应用系统去控制可以避免上述缺点。所以在微软给出更NB的解决方案前,权限系统仍是主流
  相关解决方案