A réplica de leitura do Amazon Relational Database Service (Amazon RDS) para Microsoft SQL Server replica de forma assíncrona as alterações feitas na instância principal. Uma das limitações é que os logins não são sincronizados após a criação da instância. Como faço para criar e sincronizar os logins após a criação de uma instância?
Resolução
Use as etapas a seguir para criar, confirmar e sincronizar os logins do SQL Server e do Windows na instância mestre:
Logins de SQL
Os logins do servidor SQL são autenticados por instâncias do mecanismo de banco de dados e as senhas de login são armazenadas no banco de dados mestre. Os logins do SQL podem ser mapeados para um usuário do banco de dados em um banco de dados ou para usuários diferentes em bancos de dados diferentes. Logins e usuários geram um ID de declaração exclusivo (SID). Isso significa que, ao sincronizar logins na réplica de leitura, você deve garantir que o SID de login corresponda ao SID na instância principal.
Crie o login do SQL na instância principal e sincronize com a réplica de leitura
1. Na instância principal, crie um login do SQL Server chamado “testlogin”.
USE [master]
GO
CREATE LOGIN [testlogin] WITH PASSWORD=N'Pa$$word';
2. Confirme se o login “testlogin” foi criado na instância principal.
SELECT name FROM sys.sql_logins WHERE name = 'testlogin';
3. Na instância principal, encontre o SID mapeado para o login “testlogin”.
select name, sid FROM sys.sql_logins WHERE name = 'testlogin'
name sid
-------------------------------------------------------------------------------
testlogin 0xEBF23823BDEAED42823C76C8706F4B6B
4. Na réplica de leitura, crie um novo login “testlogin” mapeado para o SID da instância mestre.
CREATE Login testlogin WITH password = ' Pa$$word', SID = 0xEBF23823BDEAED42823C76C8706F4B6B
5. Confirme se o novo login foi criado com o SID correspondente.
SELECT name, sid FROM sys.sql_logins WHERE name = 'testlogin'
Logins do Windows
Logins de servidor SQL autenticados pelo Windows são logins em nível de instância em que o sistema operacional gerencia a autenticação. Os logins do Windows podem ser mapeados para uma conta de usuário, grupo de segurança local ou conta de domínio.
Crie o login do Windows na instância principal e leia a réplica
Para criar um login do Windows na instância principal e ler a réplica, faça o seguinte:
1. Na instância principal, crie um login do Windows “[SQLAD\ user1]”.
CREATE LOGIN [SQLAD\user1] FROM WINDOWS
WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
GO
2. Na réplica de leitura, crie o login “[SQLAD\ user1]” usando o mesmo comando. Diferentemente de um login SQL, os logins SQL autenticados pelo Windows não exigem que um SID seja mapeado.
CREATE LOGIN [SQLAD\user1] FROM WINDOWS
WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
GO
No Amazon RDS, não é possível usar os procedimentos de loja fornecidos pela Microsoft “sp_help_revlogin” e “sp_hexadecimal” para gerar logins. Isso ocorre porque o Amazon RDS não fornece privilégios elevados em um banco de dados mestre.