我有一个独特的(嗯,我认为它是独特的)情况,数据库(是的,整个数据库)可以或多或少地动态创建。
忽略明显的问题,我需要能够允许 AD 帐户读取任何数据库中的任何数据。
承认围绕所有这些的安全问题,有没有办法在服务器级别仅授予一次,而不是在弹出新数据库时必须不断授予?我宁愿将它保持在数据阅读器级别。
具体来说: 1. 数据库是在 DBA 事先不了解的情况下动态创建的 2. 报告作业遍历这些数据库,如果遇到新数据库,就会失败。
我正在使用 SQL Server 2008R2 和 SQL Server 2014。
由于您不知道要授予它们的架构或表名称,因此不要专门这样做。您可以将您的 AD 帐户添加到数据库中的
db_datareader
角色model
,这应该被复制到在该实例上创建的每个数据库中。此外,如果数据库碰巧是通过恢复或创建数据库语句以外的任何方式创建的,您可以使用基于策略的管理规则轻松验证您的 AD 帐户是否是该数据库角色的成员,如果不是,则采取适当的措施。
在 SQL Server 2014 中,您可以使用这两个新权限:
资源
对于 SQL Server 2008R2,您可以将用户添加到模型数据库或为数据库创建操作编写 DDL 触发器,以便在创建新数据库时将您的用户添加到新数据库中。