示例数据库:WarehouseDB
示例用户:报告
数据库状态:只读/待机模式
如何在不授予系统管理员权限的情况下仅授予用户对 WarehouseDB 的“报告”访问权限?
当我恢复一个 bak 文件以在 norecovery 模式下创建 WarehouseDB,然后恢复另一个事务日志文件以将其置于只读/待机模式以执行选择查询以进行报告时,就会出现问题。我从那时起进行日志传送的原因是因为生产数据库和仓库数据库都可以随时同步,而无需任何人工干预。现在,如果我给这个用户 sysadmin 权限,那么他们当然可以查询数据库,但出于安全考虑,我不能允许他们。另外因为它是一个只读数据库,我也不能创建另一个用户并将它们映射到 WarehouseDB。
我忘记提及的另一件事是,源数据库名称例如是“ProductionDB”,并且在还原时将其更改为 WarehouseDB,因为我在镜像服务器上为 ProductionDB 设置了镜像,然后在其中还原了 WarehouseDB。
关于如何解决这个问题的任何想法?
用户必须在数据库的源副本中被授予权限。
恢复的副本就是源的副本,因此无法更改一个而不是另一个。
由于这是一个 SQL Server 登录,您需要在两台服务器上创建具有相同 SID 的登录,以便从数据库用户到登录的映射在所有情况下都匹配。您可以通过在辅助节点上重新创建登录名来执行此操作,并在
CREATE LOGIN
语句中手动指定 SID。如果您使用诸如复制之类的解决方案(不是说您应该这样做,只是举个例子),这可以使用两个读/写数据库,您可以在其中完全独立地授予权限。