Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server-将更新限制为特定列_Sql Server_Sql Update_User Permissions_Restrict - Fatal编程技术网

Sql server SQL Server-将更新限制为特定列

Sql server SQL Server-将更新限制为特定列,sql-server,sql-update,user-permissions,restrict,Sql Server,Sql Update,User Permissions,Restrict,你好。我解释我的情况。有两个用户(user1和user2)。我在SQL server中有一个表(tblTest),有3列(f1、f2、f3)。我想做的是: 拒绝UPDATE列f2,并为user1授予UPDATE列f1和f3 将UPDATE授予f2列,并拒绝UPDATE授予user2的f1和f3列 目前我还停留在第一步) 这就是我所做的: 在SQL Server中,我选择了tblTest=>Properties=>Permissions,选择了user1 在底部的“用户权限1”中=>更新“列权限”

你好。我解释我的情况。有两个用户(user1和user2)。我在SQL server中有一个表(tblTest),有3列(f1、f2、f3)。我想做的是:

  • 拒绝
    UPDATE
    列f2,并为
    user1
    授予
    UPDATE
    列f1和f3

  • UPDATE
    授予f2列,并拒绝
    UPDATE
    授予
    user2
    的f1和f3列

  • 目前我还停留在第一步)

    这就是我所做的:

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

    在底部的“用户权限1”中=>更新“列权限”按钮,选中f2的“拒绝”和f1和f3的“授予”

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

    显然,命令失败,并显示以下消息:

    对对象“tblTest”、数据库“DBREMARKSQL”、架构“dbo”的列“f2”的更新权限被拒绝

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

    可能吗

    多谢各位

    顺便说一句,我使用SQL Server 2014 Management Studio。

    您可以这样尝试:

    GRANT UPDATE ON dbo.tblTest(f1,f3) TO user1;
    DENY UPDATE ON dbo.tblTest(f2 ) TO user1;
    
    你试过这个吗:

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

    font:

    我试过了。但对于来自服务器的相同消息,结果是相同的。f1列和f3列未更新。@LukeLuke:-是否检查您的列是否具有更新权限?看起来您也为f1和f3设置了拒绝更新权限。我尝试了。但对于来自服务器的相同消息,结果是相同的。f1列和f3列未更新。是否尝试在单个
    update
    语句中更新多个列(包括
    tblTest.f2
    ),然后希望
    f2
    未更新,但其他列会更新?这不是SQL Server的工作方式-如果您执行的语句由于缺乏权限而失败,则不会执行该语句的任何内容!如果要将其他列更新为
    User1
    -请使用适当的
    update
    语句,该语句不提及
    f2
    列!好的我抓到你了。谢谢你的澄清。在这种情况下,我想我不能在我未来的vb.net程序中使用以下指令:MyDatabaseBindingSource.EndEdit()MyDatabaseTableAdapter.Update(MyDataSet.tblTest),因为它是一条Update语句。我说得对吗?信息:上面的场景是一个疑难解答,以了解为什么此MyDatabaseTableAdapter.Update(MyDataSet.tblTest)不能以相同的效果工作。