SQL Server - 将UPDATE限制为特定列

时间:2015-10-29 11:46:53

标签: sql-server sql-update user-permissions restrict

美好的一天。我解释一下我的情景。有两个用户(user1和user2)。我在SQL服务器中有一个表(tblTest),有3列(f1,f2,f3)。我想做的是以下几点:

  1. 拒绝UPDATE到第f2列并将UPDATE授予user1的第f1和f3列。

  2. UPDATE授予第f2列并拒绝UPDATEuser2的第f1和f3列。

  3. 目前我仍然坚持第1步。

    这就是我所做的:

    在SQL Server中,我选择了tblTest => Properties => Permissions,选择了user1。

    In" user1"的权限;在底部=>然后更新"列权限"按钮,在Deny上检查f2,为f1和f3检查。

    然后我使用user1的凭据访问了SQL Server,并尝试更新此表中的一行。

    显然命令失败了:

      

    列&f 39' UPDATE权限被拒绝对象' TblTest',数据库' dbremarksSQL',架构' dbo'。

    到目前为止,一切都有效。我的问题是其他列也没有更新。我希望更新命令至少更新f1和f3列,并拒绝更新到f2(保持原样)。

    这可能吗?

    谢谢

    btw我使用的是SQL Server 2014 Management Studio。

2 个答案:

答案 0 :(得分:2)

您可以尝试这样:

GRANT UPDATE ON dbo.tblTest(f1,f3) TO user1;
DENY UPDATE ON dbo.tblTest(f2 ) TO user1;

答案 1 :(得分:0)

你试过这个:

grant update(column-name) on table-name to user-name

font:Grant alter on only one column in table