【问题标题】:SQL Server permissions per column invisible to users用户不可见的每列 SQL Server 权限
【发布时间】:2013-09-08 03:36:33
【问题描述】:

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

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

【问题讨论】:

    标签: sql sql-server permissions


    【解决方案1】:

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

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

    【讨论】:

    • 我知道我可以按照问题中的示例设置列的权限,但是如果某些列未授予选择权限,我如何确保 select * from table 有效?
    猜你喜欢
    • 2012-03-29
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多