Sincronização de usuários e objetos do banco de dados com uma réplica de leitura do SQL Server
Espera-se que todos os logins, perfis de servidor personalizados, trabalhos do agente do SQL ou outros objetos no nível do servidor que existam na instância de banco de dados primária no momento da criação de uma réplica de leitura estejam presentes na réplica de leitura recém-criada. No entanto, todos os objetos no nível do servidor criados na instância de banco de dados primária após a criação da réplica de leitura não serão replicados automaticamente, e você deverá criá-los manualmente na réplica de leitura.
Os usuários do banco de dados são replicados automaticamente da instância de banco de dados primária para a réplica de leitura. Como o banco de dados de réplica de leitura está no modo somente leitura, o identificador de segurança (SID) do usuário do banco de dados não pode ser atualizado no banco de dados. Portanto, ao criar logins de SQL na réplica de leitura, é essencial garantir que o SID desse login corresponda ao SID do login SQL correspondente na instância de banco de dados primária. Se você não sincronizar os SIDs dos logins do SQL, eles não poderão acessar o banco de dados na réplica de leitura. Os logins autenticados do Windows Active Directory (AD) não apresentam esse problema porque o SQL Server obtém o SID do Active Directory.
Para sincronizar um login do SQL da instância de banco de dados primária com a réplica de leitura
-
Conecte-se à instância de banco de dados primária.
-
Crie um login do SQL na instância de banco de dados primária.
USE [master] GO CREATE LOGIN
TestLogin1
WITH PASSWORD = 'REPLACE WITH PASSWORD
';nota
Especifique uma senha diferente do prompt mostrado aqui como prática recomendada de segurança.
-
Crie um usuário do banco de dados para o login do SQL no banco de dados.
USE [
REPLACE WITH YOUR DB NAME
] GO CREATE USERTestLogin1
FOR LOGINTestLogin1
; GO -
Verifique o SID do login do SQL recém-criado na instância de banco de dados primária.
SELECT name, sid FROM sys.server_principals WHERE name =
TestLogin1
; -
Conecte-se à réplica de leitura. Crie o login do SQL.
CREATE LOGIN
TestLogin1
WITH PASSWORD = 'REPLACE WITH PASSWORD
', SID=[REPLACE WITH sid FROM STEP #4
];
Como alternativa, se você tiver acesso ao banco de dados da réplica de leitura, poderá corrigir o usuário órfão da seguinte forma:
-
Conecte-se à réplica de leitura.
-
Identifique os usuários órfãos no banco de dados.
USE [
REPLACE WITH YOUR DB NAME
] GO EXEC sp_change_users_login 'Report'; GO -
Crie um login do SQL para o usuário órfão do banco de dados.
CREATE LOGIN
TestLogin1
WITH PASSWORD = 'REPLACE WITH PASSWORD
', SID=[REPLACE WITH sid FROM STEP #2
];Exemplo:
CREATE LOGIN
TestLogin1
WITH PASSWORD = 'TestPa$$word#1
', SID=[0x1A2B3C4D5E6F7G8H9I0J1K2L3M4N5O6P
];nota
Especifique uma senha diferente do prompt mostrado aqui como prática recomendada de segurança.