Eu tenho uma instância do SQL Server 2008 R2 Express Edition em casa e outra em um servidor nas instalações do cliente que estou usando para desenvolver um aplicativo usando o Access como front-end. Este aplicativo possui 5 logins separados que eu posso usar na cadeia de conexão (com base no grupo de acesso em que o usuário está). A instância inicial possui vários bancos de dados - alguns dos quais nada têm a ver com esses aplicativos
Criei manualmente os logins em cada instância ao longo do tempo (e provavelmente em uma ordem diferente).
Espero poder (mais de uma vez) fazer um backup da minha máquina doméstica do banco de dados em que estou trabalhando e carregá-lo na instância nas instalações do cliente usando restore, movendo apenas os arquivos no conjunto de backup para o real arquivos usados neste servidor durante o processo de restauração. A parte que eu não entendo é o mapeamento entre o usuário do banco de dados e o login.
Eu achava que a correspondência do nome deveria ser suficiente, mas, ao tentar corrigir um problema no qual os usuários do banco de dados restaurado não pareciam mapeados para o logon do servidor, deparei-me com a instrução Transact-SQL ALTER USER e, em particular, sua referência ao uso de WITH LOGIN e alguma discussão sobre um "SID".
Como (presumo) os nomes de logon do servidor têm SIDs diferentes em cada instância, isso significa que, depois de carregar um backup entre instâncias, preciso reconectar o mapeamento novamente com uma série de comandos ALTER USER WITH LOGIN?
fonte