有没有办法在服务器级别为每个数据库(包括新数据库)授予 SELECT 权限?

rot*_*eek 4 security sql-server sql-server-2008-r2 sql-server-2014

我有一个独特的(好吧,我认为这是独特的)情况,可以或多或少地动态创建数据库(是的,整个数据库)。

忽略与此相关的明显问题,我需要能够允许 AD 帐户读取任何数据库中的任何数据。

承认围绕所有这些的安全问题,有没有办法在服务器级别只授予一次,而不是在新数据库弹出时不断授予?我更愿意将它保持在数据阅读器级别。

具体来说: 1. 数据库是动态创建的,无需 DBA 的先验知识 2. 报告作业遍历这些数据库,如果遇到新数据库则失败。

我正在使用 SQL Server 2008R2 和 SQL Server 2014。

小智 6

由于您不知道要授予它们的架构或表名称,因此无需专门执行此操作。您可以将您的 AD 帐户添加到数据库中的db_datareader角色model,这应该复制到在该实例上创建的每个数据库中。

此外,如果数据库碰巧是通过还原或创建数据库语句以外的任何方式创建的,您可以使用基于策略的管理规则轻松验证您的 AD 帐户是否是该数据库角色的成员,如果没有采取适当的措施。