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