Um problema muito comum quando levamos um bando de dados para um novo servidor é o usuário perder o acesso à base e receber a mensagem de erro Msg 18456, Level 16, State 1 Login failed for user ‘%ls’. Este problema normalmente acontece quando não recriamos os logins e refazemos suas devidas associações as bases.
O artigo abaixo, decreve como você resolve este problema tranferindo os logins e senhas para o novo servidor.
KB 246133: How to transfer logins and passwords between instances of SQL Server
Após a tranferência dos logins e senhas, um problema que também ocorre com muita frequência é os usuários ficarem perdidos dentro da base. Neste caso dizemos que os usuários ficaram órfãos, ou seja, embora você tenha recriado os logins, estes não foram reassociados aos respectivos usuários dentro da base. Uma maneira fácil de identificar os usuários órfãos é executando a procedure de sistema sp_helpuser no banco de dados. Procure por usuários onde a coluna LoginName esteja como NULL.
A maneira simples de resolver este problema é executar a procedure de sistema sp_change_users_login como no exemplo abaixo. O exemplo reassocia o login test ao usuário test do banco de dados Northwind.
Use Northwind
go
sp_change_users_login ‘update_one’, ‘test’, ‘test’
Aqui no portal está disponível um script que automatiza a reassociação dos usuários órfãos de um banco de dados após um restore. O script permite reassociar os usuários de um banco específico ou varrer todos os bancos procurando por usuários órfãos e corrigindo o problema.
Para entender melhor a causa deste problema e como a solução é realizada, leiam os artigos abaixo:
KB 274188: PRB: “Troubleshooting Orphaned Users” Topic in Books Online is Incomplete
KB 168001: User logon and/or permission errors after restoring dump

