9 我们有一个包含1000多个表的数据库。我需要创建一个角色,该角色只允许对所有表进行读取,并且可以对两个特定的表进行写访问。 我当时在搞数据库角色,但是每当我添加表时,我都不得不手工选择所有1000个表...还有更好的方法吗? sql-server-2012 security role — 韦斯 source 实际上,这可能是最简单的方法。是否可以编写脚本?每当我们刷新这些数据库之一时,我都需要保留一组脚本,我可以立即恢复所有设置。 — Wes
9 对模式(例如dbo)的授予权限将级联到该模式中的所有对象。对于个别例外情况,您可以明确列出这些例外情况: GRANT SELECT ON SCHEMA::dbo TO [role]; GO GRANT INSERT, UPDATE --, DELETE ON dbo.table_they_can_write_to TO [role]; DENY SELECT ON dbo.table_they_cannot_read TO [role]; — 亚伦·伯特兰 source 3 很简单。很高兴我们有这样的社区。 — Wes
1 尝试这个 : EXEC sp_MSForEachTable 'GRANT INSERT, UPDATE ON ? to [ROLE]' — 德鲁津 source 3 仅供参考,这为所有表提供了写入但没有读取权限,并且完全忽略了架构。也是sp_MSForEachTable未记录,不受支持的,并且可能会遇到与相同的跳过问题sp_MSForEachDB。 — 亚伦·伯特兰