我有一个 SQL Server 2005 数据库,我正尝试使用 Windows 身份验证作为受限用户帐户访问该数据库。我已将 BUILTIN\Users 添加为数据库用户(在此之前,我什至无法打开数据库)。我的工作假设每个人都应该对应用于他们的“公共”角色具有权限,所以我没有对角色分配做任何事情。在 tblFoo 下,我可以使用 SSMS 属性对话框(权限页面)添加“公共”,然后设置显式权限。其中包括 SELECT 的“Grant”。但是跑步
SELECT * from tblFoo;
作为受限(BUILTIN\Users)帐户给我一个错误“选择对象'tblFoo',数据库'bar',模式'dbo'的权限被拒绝”。在属性对话框中,有一个“有效权限”按钮,但它是灰色的。
此外,我尝试创建一个名为“UserTest”的非私有帐户,在服务器级别添加该帐户,然后将其映射到“bar”数据库。这让我可以将 UserTest 添加到“用户或角色”列表中,这让我可以为该帐户运行“有效权限”。根本没有列出任何权限——这似乎不对。该帐户必须是公共的,并且公共授予(除其他外)在 tblFoo 上选择,那么为什么 UserTest 帐户不显示有效权限?我觉得我在这里有点疯了。
旁白:我知道很多人不喜欢使用“公共”角色来设置权限。这只是我的修补时间;在最终设计中,我确信我们将拥有几个灵活的(自定义)数据库角色。我只是想弄清楚我看到的行为,所以请不要“不要那样做!” 答案。
更新:显然我知道的 SQL Server 足以对自己和他人构成危险。在设置权限时(正如我所说,“除其他外”),我有拒绝控制。当我设置这个权限时,我想我试图查看它做了什么,有一个模糊的想法,并决定拒绝。我目前不记得为什么这似乎是要做的事情,但似乎这就是我获得许可失败的原因。所以我正在更新我的问题:任何人都可以解释与表有关的“控制”权限吗?