【发布时间】:2016-01-29 13:02:49
【问题描述】:
美好的一天。我解释我的情况。有两个用户(user1 和 user2)。我在 SQL Server 中有一个表(tblTest),有 3 列(f1、f2、f3)。我想做的是:
拒绝
UPDATE到列 f2 并为user1授予UPDATE到列 f1 和 f3。将
UPDATE授予f2 列,拒绝UPDATE授予user2的f1 和f3 列。
目前我被困在第 1 步)。
这就是我所做的:
在 SQL Server 中,我选择了tblTest => Properties => Permissions,选择了 user1。
在底部的“用户 1 的权限”中 => 更新然后“列权限”按钮,选中拒绝 f2 和授予 f1 和 f3。
然后我使用user1 的凭据访问 SQL Server,并尝试更新此表中的一行。
显然命令失败并显示此消息:
对象“tblTest”、数据库“dbremarksSQL”、模式“dbo”的列“f2”的更新权限被拒绝。
到目前为止一切正常。我的问题是其他列也没有更新。我希望 update 命令至少更新 f1 和 f3 列,并拒绝仅对 f2 进行更新(保持原样)。
这可能吗?
谢谢
顺便说一句,我使用 SQL Server 2014 Management Studio。
【问题讨论】:
-
您是否尝试在单个
UPDATE语句中更新多个列(包括tblTest.f2),然后您希望f2未更新,但其他列已更新?这不是 SQL Server 的工作方式 - 如果您执行由于缺少权限而失败的语句,则该语句的 nothing 将被执行!如果您想将其他列更新为User1- 使用适当的UPDATE语句没有提及f2列! -
很好!我接到你了。感谢您的澄清。然后在这种情况下,我想我不能在我未来的 vb.net 程序中使用以下指令: MyDatabaseBindingSource.EndEdit() MyDatabaseTableAdapter.Update(MyDataSet.tblTest) 因为它是一个单一的 UPDATE 语句。我对么?信息:上述场景是一个故障排除,以了解为什么这个 MyDatabaseTableAdapter.Update(MyDataSet.tblTest) 不能产生相同的效果。
标签: sql-server sql-update user-permissions restrict