每列的SQL Server权限对用户不可见

时间:2013-09-04 14:50:28

标签: sql sql-server permissions

我可以在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。有没有办法让这个字段对用户不可见,或以某种方式使用它不会出现错误。

我不想为此创建其他视图。我不想创建视图的原因是系统中有很多用户具有不同的权限,维护这种复杂的机制将付出太多努力,具有权限的解决方案将更加容易。

1 个答案:

答案 0 :(得分:0)

是的,你可以这样做。查看sp_column_privilegesColumn Permission

 sp_column_privileges [ @table_name = ] 'table_name' 
 [ , [ @table_owner = ] 'table_owner' ] 
 [ , [ @table_qualifier = ] 'table_qualifier' ] 
 [ , [ @column_name = ] 'column' ]