控制对表的某些列的访问?

时间:2011-09-13 10:10:10

标签: sql-server-2005 database

是否可以控制对表的某些列的访问并允许仅访问MS-SQL服务器中的特定列?如果有,怎么样?如果没有,有没有其他选择?

3 个答案:

答案 0 :(得分:2)

IMO正确的方法是使用视图并将视图保护给可以访问它的人。

请参阅Ode To Code上的更好示例。

说你有一张桌子(the_table),上面有三个cols(a,b& c)你可以创建一个只有你需要的cols的视图

create view show_colc_view 
as 
  select c from  the_table

然后,您可以保护对表和视图都具有CRUD权限的人员。

所以有关人员可以这样做:

select * from  show_colc_view

但不是

select * from  the_table

答案 1 :(得分:1)

SQL Server确实支持列级权限。

有关如何通过SSMS UI应用它们的详细信息,请参阅this article

答案 2 :(得分:0)

使用允许的列创建视图,并仅授予用户对视图的访问权限。

table columns: a, b, c, d, e, f

CREATE VIEW allowed as SELECT a,b,c FROM table;
GRANT SELECT ON allowed to <user>;

然后用户应该查询视图而不是表:

SELECT * from allowed;

他们只会看到a,b和c列(不是d,e或f)