【发布时间】:2013-02-13 06:52:06
【问题描述】:
我编写了一个简单的 c# 代码,连接到 sql-server 数据库并执行查询:
cmd = new SqlCommand(txtQuery.Text.ToString().Trim(), con);
cmd.ExecuteNonQuery();
在我的数据库中,我有一个名为 myTB 的表。我也有两个用户:user1(owner), user2(new user created)
我使用 user2 的用户名和密码登录(连接到 DB)!
-
我可以使用下面的查询访问由 user1 创建的表:
“从 user1.myTB 中选择 *”
(我不知道为什么这个查询会出错:“select * from myTB”,现在算了吧!)
现在我想 REVOKE 'select' 来自 user2 的权限。我的意思是我不希望 user2 对 user1 创建的 myTB 表执行 select 查询。
遇到一个问题我该怎么办! 我使用了这个查询,但没有任何改变!
Q1:“从 user2 撤消对 user1.myTB 的选择”
user2 再次可以从 user1.myTB 中选择 * !!!为什么!?
请帮我解决这个问题。 谢谢。
【问题讨论】:
-
如果您执行
select * from myTB,您实际上是在告诉 SQL Server myTB 存在于默认架构中(dbo,除非它已被更改)。在这种情况下,尽管您没有明确说明,myTB 显然归 user1 的模式所有,这就是select * from user1.myTB起作用的原因,因为您已经正确指定了表的位置。一般而言,始终指定表所在的架构是公认的好习惯,除非您非常懒惰并且将所有内容都留在了 dbo 中,这在许多情况下是不受欢迎的。 -
@StevePettifer 谢谢 :)
-
顺便说一句,我偶尔会将自己归入超级懒惰的类别 - 该特定句子通常不是专门针对您或您的工作的! :)
-
@StevePettifer 没关系;)但我的问题出在!我不知道如何撤销用户的选择权限! :(这里没有人回答我!
标签: c# .net sql-server winforms