2

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

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

4

1 回答 1

0

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

 sp_column_privileges [ @table_name = ] 'table_name' 
 [ , [ @table_owner = ] 'table_owner' ] 
 [ , [ @table_qualifier = ] 'table_qualifier' ] 
 [ , [ @column_name = ] 'column' ]
于 2013-09-04T14:56:24.430 回答