É possível que diferentes usuários acessem meu banco de dados de réplica de leitura? Este não é de fato um caso de uso popular para uma réplica de leitura? Quero que um determinado conjunto limitado de credenciais tenha acesso ao meu banco de dados primário de leitura e gravação e, em seguida, quero que várias outras pessoas possam ter acesso somente leitura à réplica de leitura para relatórios, consultas ad-hoc, etc. . Não quero necessariamente que os dois bancos de dados tenham exatamente os mesmos acessadores.
Criei um login do Microsoft Entra no servidor que hospeda minha réplica de leitura, mas aqui está o que recebo quando tento criar o usuário para acesso ao banco de dados.
Msg 3906, Level 16, State 2, Line 1
Failed to update database "********" because the database is read-only.
Bem, é claro que o banco de dados é somente leitura, é minha réplica de leitura. Mas não estou tentando gravar dados no banco de dados, apenas definir os detalhes de meta-segurança para quem na minha organização tem permissão para acessar a réplica de leitura. Isso não pode ser feito?
Sim, até certo ponto .
Mover leituras para réplicas legíveis do primário? Sim!
Não tenho muita certeza do que significa "exatamente os mesmos acessadores", mas vou interpretar como "Não quero os mesmos logins e usuários em cada instância". Dado esse entendimento, a resposta é não, atualmente não é possível.
Você pode ter acessos diferentes por instância, mas o próprio banco de dados precisará ter um usuário criado para esse login ou o login precisa ser
sysadmin
.Esses metadados residem no banco de dados, então sim, você está tentando gravar dados no banco de dados.
Users
residem no banco de dados e estão vinculados a logins (que residemmaster
) por meio de seu SID. Se você estiver tentando adicionar um login à instância, tudo bem e funcionará. Se você estiver tentando adicionar um usuário, ele precisará ser adicionado à réplica primária e fluirá para as réplicas secundárias. Os logins não precisam estar em cada réplica, os usuários não podem ser alterados conforme discutido.Sim, o primário é a única cópia gravável do banco de dados e a adição de usuários requer gravação no banco de dados.
Sim. Se você não deseja que esse login acesse o banco de dados nesse servidor, não o adicione. É isso que você está pedindo em sua pergunta, acredito.
Se for um login SQL que estará vinculado ao usuário, use a
SID
opçãoCREATE USER
. Se for um login de domínio, basta usarCREATE USER
com o nome de login do domínio. O usuário em ambos os casos terá o SID correto para vinculá-lo ao login.O primário (qualquer servidor que esteja em um determinado momento) é o único local onde os usuários podem ser adicionados. Se você quiser que um usuário tenha acesso, isso precisa ser feito lá. A menos que use
sysadmin
logins, o login precisará de um usuário associado (tecnicamente, você poderia fazer outras coisas para obter acesso sem um usuário, mas isso é, na melhor das hipóteses, suspeito). Cada servidor não precisa dos mesmos logins, apenas dos logins que você deseja naquele servidor.Os usuários residem dentro do banco de dados, incluindo permissões de banco de dados. Os logins residem
master
junto com as permissões no nível do servidor. Se você deseja adicionar permissões de usuário, isso precisa ser concluído no primário.Como afirmei, os logins permanecem,
master
portanto não há problema em adicionar logins em uma réplica secundária, pois nada precisa ser gravado no banco de dados.Existem vários usos. No seu caso, permitiria um login com sysadmin para acessar o banco de dados sem um usuário associado.