Quero clonar minhas permissões de login de usuário do Amazon Relational Database Service (Amazon RDS) para SQL Server.
Resolução
Crie procedimentos armazenados
Para duplicar seu RDS para SQL Server, primeiro você deve criar procedimentos armazenados no ambiente em que deseja duplicar o usuário.
Para criar os procedimentos armazenados, execute o script MSSQL_RDS_Clone_Login. Para obter mais informações, consulte o script MSSQL_RDS_Clone_Login no site do GitHub. É possível criar os procedimentos armazenados em qualquer banco de dados de usuário que não esteja no banco de dados do sistema do RDS para SQL Server.
O script MSSQL_RDS_Clone_Login não pode fazer alterações em novos logins, a menos que o usuário que executa o script tenha acesso para conceder essas permissões. Se o usuário não tiver acesso para conceder permissões, as permissões não aparecerão no script. Se você não tiver permissões de concessão e tentar adicionar manualmente as permissões ao script, o script falhará.
O script MSSQL_RDS_Clone_Login cria três procedimentos armazenados:
- DuplicateLogin: esse procedimento duplica o usuário de login e do banco de dados das permissões de login de cada banco de dados do qual você está copiando.
- GrantUserRoleMembership: esse procedimento duplica as permissões e perfis do usuário do banco de dados para o novo usuário.
- DuplicateRDS: esse procedimento consolida os resultados dos procedimentos armazenados DuplicateLogin e GrantUserRoleMembership.
Execute os procedimentos armazenados
Para executar os procedimentos armazenados, conclua as seguintes etapas:
-
Abra uma nova janela Transact-SQL (TSQL).
-
Pressione CTRL+T para garantir que os resultados estejam em formato de texto.
-
Execute os scripts a seguir.
Login do SQL:
USE [DB_NAME]
EXEC DuplicateRDS @NewLogin=[duplicate_login_name]
,@NewLoginPwd = password
,@LoginToDuplicate = primary_login
,@WindowsLogin = F
,@DatabaseName=NULL
Observação: substitua DB_NAME pelo nome do banco de dados do usuário, duplique_login_name pelo nome do seu login e password pela sua senha.
Login do Windows:
USE [DB_NAME]
EXEC DuplicateRDS @NewLogin=[domain\duplicate_login_name]
,@LoginToDuplicate = primary_login
,@NewLoginPwd = NULL
,@WindowsLogin = T
,@DatabaseName=NULL
Observação: substitua DB_NAME pelo nome do banco de dados do usuário, domain pelo nome do seu domínio e duplicate_login_name pelo nome do seu login.
-
Depois que o script for gerado, copie o script da guia Resultados e execute-o em uma nova janela de consulta.
Observação: depois que o script é executado, seu login do SQL Server é gerado com permissões de nível de servidor e banco de dados semelhantes às do seu login principal.
-
O login gerado exclui as permissões SSISDB do Microsoft SQL Server Integration Services (SSIS) para ssis_admin e ssis_logreader. Se você precisar dessas permissões, execute o seguinte comando:
ALTER ROLE [ssis_admin] ADD MEMBER [mydomain\user_name]
ALTER ROLE [ssis_logreader] ADD MEMBER [mydomain\user_name]
GO
Observação: substitua mydomain pelo nome do seu domínio e user_name pelo seu nome de usuário. É possível receber uma saída de script desordenada devido às tabelas temporárias que o procedimento armazenado usa. Se isso ocorrer, descarte e recrie o procedimento armazenado.
-
Para verificar se há usuários órfãos, execute o seguinte script:
Use [DB_NAME] ;
GO
exec sp_change_users_login @Action='Report' ;
GO
Observação: substitua DB_NAME pelo nome do banco de dados do usuário.
-
Para descartar usuários órfãos, execute o seguinte script:
Use [DB_NAME] ;
GO
exec sp_revokedbaccess 'username'
GO
Observação: substitua DB_NAME pelo nome do banco de dados do usuário e username pelo seu nome de usuário.
-
Se você não quiser manter os procedimentos armazenados depois de duplicar o login, execute o seguinte script:
USE [DB_NAME] ;
GO
DROP PROCEDURE [dbo].[DuplicateRDS]
GO
DROP PROCEDURE [dbo].[DuplicateLogin]
GO
DROP PROCEDURE [dbo].[GrantUserRoleMembership]
GO
Observação: substitua DB_NAME pelo nome do banco de dados do usuário.