SQL Server:您是否可以限制只能访问一个表

And*_*and 17 sql-server permissions grant sql-server-2016

我认为答案是SQL Server肯定的,但我希望能够让某人访问数据库,但我真的希望他们可以访问一个表.

很容易限制某人只访问一个数据库,但不知道我是否可以限制到一个表.

我的想法是用另一个表的同义词创建另一个数据库,然后限制对该数据库的访问,但我想知道是否有人能想到更好的方法.

我也不相信它会起作用,因为我认为会有权限冲突.

Mit*_*eat 29

是.

exec sp_msforeachtable "DENY SELECT ON ? TO [username];"
GO

GRANT SELECT ON [schemaName].[tableName] to [username]
Go 
Run Code Online (Sandbox Code Playgroud)

虽然这有效,但您可能最好使用角色和AD组来管理权限.


mik*_*son 8

循环遍历所有表并拒绝访问的问题是,如果添加新表.

重要的是不要让用户'db_datareader'访问整个数据库.使用UI可以使用登录下的"用户映射"选项卡,您可以创建仅具有"公共"访问权限的用户.然后,您可以转到数据库并授予该用户SELECT访问特定表的权限(通过单击Securables选项卡下奇怪命名的"搜索"按钮).

当然,这种方法也适用于脚本.


kd7*_*kd7 5

GRANT SELECT ON [SchemaName].[TableName] to [UserName]
Run Code Online (Sandbox Code Playgroud)

  • 这如何保护其余的表? (3认同)
  • 抱歉,这个问题是在聊天中引起我注意的。当我发表评论时,我实际上并没有意识到这个问题有多久了。尽管如此,我认为对原始问题的答案的各个方面提出质疑是有效的,无论其接受状态或票数如何。很多问题没有公认的答案,这个问题仍然存在,因为答案旨在帮助OP *和*未来的读者。许多人可能会认为页面上的任何答案都是答案。 (2认同)
  • 这可能并不完全符合提问者的要求,但这正是我想要的:) (2认同)