【发布时间】:2019-08-10 04:26:28
【问题描述】:
我想为用户分配所有表的选择权限,并且我需要对将添加到数据库的每个表都使用此权限。
我可以通过执行我的代码结果为我的用户(data_reader)分配当前在数据库中的所有表的选择权限:
select 'grant select on object::'+s.name+'.'+t.name+' to data_reader'
from sys.schemas s
inner join sys.tables t on s.schema_id=t.schema_id
我的问题是,如果将任何表添加到数据库中,我必须在该表上为 data_reader 执行授权选择,所以它可能会被遗忘。
我进行了很多搜索,但我找不到一种方法可以将所有模式中的所有表的选择权永远授予我的用户。
【问题讨论】:
-
当你说data_reader时,你是指db_datareader吗?一定有人在你的数据库中弄乱了它的默认设置,因为默认情况下该角色可以从所有表中读取(不需要特定的每个表权限) - docs.microsoft.com/en-us/sql/relational-databases/security/…
-
阅读这篇文章,并检查是否有人没有为您正在谈论的角色(当您说 data_reader 时)发布所有表的 GRANT - mssqltips.com/sqlservertip/2894/…
-
No data_reader 是我创建的数据库用户。我想将选择所有表和未来表分配给 data_reader 用户,这是我创建的数据库用户。
-
@CaiusJard 对不起,我忘了提到你。谢谢你的链接;)
-
@CaiusJard 我阅读了链接。我认为最好的选择是将 db_datareader 分配给我的用户。我想直接将grant select分配给我的用户,但是我搜索了很多,我认为没有任何办法感谢您提到db_datareader,它对我帮助很大。谢谢;)
标签: sql sql-server select permissions