【问题描述】SqlServer如何设置才能实现某个用户只能访问指定数据库指定数据表的指定字段呢?
如下图,如何创建一个用户xiaoqian,授权它只能访问xqofficeMSSQL数据库的HumanResources.EmployeePayHistory数据表除Rate以外的字段呢?
【小千解答】设置步骤如下:
Step1 【安全性】→【登录名】→【新建登录名】
Step2 【常规】选项卡设置
【登录名】输入xiaoqian→【SQL Server身份验证】,设置密码→勾选【强制实施密码策略】→【默认数据库】选择【xqofficeMSSQL】。
Step3 【服务器角色】选项卡设置:勾选【public】
Step4 【用户映射】选项卡设置
【映射用户】勾选【xqofficeMSSQL】,【默认架构】选择【HumanResources】,【角色身份】勾选【public】。
【安全对象】和【状态】选项卡保持默认设置→【确定】。
Step5 单击【HumanResources.EmployeePayHistory】,右键,【属性】
Step6 【权限】→【搜索】,勾选【xiaoqian】,勾选【选择】行【授予】列交叉复选框→【列权限】→勾选除Rate以外各列名的【授予】复选框→【确定】。
【效果1】用户xiaoqian无法访问xqofficeMSSQL以外的数据库。
【效果2】用户xiaoqian只能访问xqofficeMSSQL数据库的HumanResources.EmployeePayHistory数据表除Rate以外的字段。
补充:
为SSMS某登录名授权访问某数据库之后,会在该数据库出现同名用户,二者存在映射关系。
【参考资料】