Exemplo de banco de dados: WarehouseDB
Exemplo de usuário: relatórios
Estado do banco de dados: Somente leitura/Modo de espera
Como dou ao usuário acesso de 'relatório' apenas ao WarehouseDB sem conceder privilégios de administrador de sistema?
O problema ocorreu quando restaurei um arquivo bak para criar o WarehouseDB no modo norecovery e, em seguida, restaurei outro arquivo de log de transações para colocá-lo no modo somente leitura/espera para fazer consultas selecionadas para fins de relatório. E a razão pela qual faço o envio de logs a partir de então é porque os bancos de dados de produção e warehouse podem ser sincronizados o tempo todo, sem qualquer intervenção manual. Agora, se eu der permissões de administrador de sistema a esse usuário, é claro que eles poderão consultar o banco de dados, mas devido a questões de segurança, não posso permitir. Além disso, como é um banco de dados somente leitura, também não posso criar outro usuário e mapeá-lo para o WarehouseDB.
Outra coisa que esqueci de mencionar é que o nome do banco de dados de origem é, por exemplo, 'ProductionDB' e, ao restaurá-lo, é alterado para WarehouseDB porque tenho uma configuração de espelhamento para ProductionDB no servidor espelhado onde o WarehouseDB é restaurado.
Alguma ideia de como resolver isso?
O usuário deve receber permissões na cópia de origem do banco de dados.
A cópia restaurada é apenas isso -- uma cópia -- da fonte, então não há como mudar uma e não a outra.
Como este é um logon do SQL Server, você precisará criar os logons em ambos os servidores com SIDs idênticos para que o mapeamento do usuário do banco de dados para o logon corresponda em todos os casos. Você pode fazer isso recriando o login no secundário, especificando o SID manualmente na
CREATE LOGIN
instrução.Se você optou por uma solução como a replicação (não estou dizendo que deveria, apenas dando um exemplo), isso funciona usando dois bancos de dados de leitura/gravação, onde você pode conceder permissões de forma totalmente independente.