Entendendo e Resolvendo problemas com Usuários Órfãos (Orphaned User)

Bom dia galera!

Vamos falar um pouco desse assunto que é muito importante e deve ser averiguado depois de um processo de restauração de banco.

Você já deve ter se perguntado, por quê um usuário de um banco de dados fica “Órfão”?

orfao_

Antes de responder a pergunta acima, é importante sabermos sobre o Identificador de Segurança do SQL Server conhecido como SID (Security Identifier). Em poucas palavras, o SID é a ligação do Login a um Usuário de banco. Para consulta dos logins e usuários existem duas views do sistema ->


select name AS LOGIN, sid AS "SID" from bancodedados.sys.syslogins

select name AS USUARIO, sid AS "SID" from bancodedados.sys.sysusers

Depois dessa breve explicação sobre o SID, vamos a resposta da pergunta sobre a ocorrência de um usuário órfão. Segundo a technet -> http://technet.microsoft.com/pt-br/library/ms175475.aspx, a causa para um usuário se tornar órfão depois de um processo de restauração, é por quê o mesmo é mapeado para uma SID que não está presente na nova instância restaurada, ou seja esse usuário fica sem um login, pois perdeu a ligação com a SID.

Depois da explicação sobre como um usuário se torna Órfão, vamos agora a solução de tal problema.Rode a procedure abaixo para verificar todos os usuários que ficaram órfãos.


use AdventureWorks2012

go

EXEC sp_change_users_login 'Report'

sp_change_users_login-report

Depois execute o código abaixo que atribuirá o usuário db_login1 ao login com o mesmo nome.


Use AdventureWorks2012
GO
EXEC sp_change_users_login 'Auto_Fix','db_login1'

Na prática o sql server está fazendo o seguinte procedimento:


ALTER USER db_login1 with login = dblogin1

E depois atribui um SID válido para tal usuário.

Mas o parâmetro ‘Auto_Fix ‘ só altera o usuário, quando o nome do mesmo é igual ao nome do login. Para nomes diferentes (usuário/login) é só executar a procedure sp_change_users_login com os seguintes parâmetros.


Use AdventureWorks2012

GO

EXEC sp_change_users_login 'Update_One','db_login1','Outro_Login'

Concluindo

É importantíssimo corrigir os usuários órfãos, pois as aplicações de uma corporação necessitam de que seus usuários de banco estejam devidamente mapeados aos seus logins.

Valeu pessoal!

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s