我可以在db中的某些列上设置权限,并以对用户透明的方式授予另一列,假设我有以下授权:
GRANT SELECT ON [dbo].[DIM_Table1](Field1 , Field2 , Field4 ) TO [NDMRole] ;
-- column Field3 is missing, it's prohibited to select for this user.
如果用户尝试执行:
SELECT * from Dim_Table1
她会收到错误消息,说明不允许选择Field3
。有没有办法让这个字段对用户不可见,或以某种方式使用它不会出现错误。
我不想为此创建其他视图。我不想创建视图的原因是系统中有很多用户具有不同的权限,维护这种复杂的机制将付出太多努力,具有权限的解决方案将更加容易。
答案 0 :(得分:0)
是的,你可以这样做。查看sp_column_privileges和Column Permission
sp_column_privileges [ @table_name = ] 'table_name' [ , [ @table_owner = ] 'table_owner' ] [ , [ @table_qualifier = ] 'table_qualifier' ] [ , [ @column_name = ] 'column' ]