Sql server SQL Server-将更新限制为特定列
你好。我解释我的情况。有两个用户(user1和user2)。我在SQL server中有一个表(tblTest),有3列(f1、f2、f3)。我想做的是: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”中=>更新“列权限”
UPDATE
列f2,并为user1
授予UPDATE
列f1和f3UPDATE
授予f2列,并拒绝UPDATE
授予user2
的f1和f3列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)不能以相同的效果工作。