Ocasionalmente, movo um banco de dados (SQL Express 2012) de uma máquina de desenvolvimento para um servidor ou vice-versa, usando o backup e a restauração do banco de dados no SQL Server Management Studio.
Sempre que faço isso, os aplicativos na máquina de destino não podem acessar o banco de dados até excluir o usuário que eles usam "george" dos usuários do banco de dados (Banco de Dados, Segurança, Usuários no SQL Server Management Studio) e adicioná-lo novamente como proprietário em Segurança, Logins, george / properties, mapeamento do usuário.
Existe uma maneira melhor de fazer isso? Parece um pouco complicado.
sql-server
backup
xpda
fonte
fonte
CREATE LOGIN
instrução.Respostas:
Esta é a diferença entre logins e usuários e como eles se relacionam:
O que normalmente acontece com logons e usuários de bancos de dados autenticados com SQL em uma restauração é que o SIDS estará fora de sincronia, interrompendo o relacionamento. Esse relacionamento deve ser reparado antes que você possa se conectar ao banco de dados usando esse logon, porque aos olhos do SQL Server esses objetos não estão mais conectados. Você pode corrigir isso com o seguinte SQL:
Você pode usar a seguinte consulta no contexto do seu banco de dados para verificar se há órfãos:
fonte
Você pode mudar o banco de dados para o banco de dados contido . O usuário do banco de dados contido é autenticado pelo banco de dados, não no nível da instância por meio do login. Isso simplifica a movimentação do banco de dados para uma instância diferente.
Caso contrário, você poderá fazer backup das informações de login usando os scripts sp_help_revlogin fornecidos neste KB de suporte da Microsoft . E execute o script de saída na nova instância.
fonte
Eu uso o script abaixo para migrar / criar as contas de usuário e logins. Execute-o no servidor para o qual você restaurou o banco de dados e forneça o nome original do servidor como parâmetro para o procedimento.
Não aceito nenhum crédito pelo procedimento, pois o obtive de outro lugar, mas funciona bem.
fonte
Aqui está uma solução que funcionou para mim. O que ele faz é:
EXEC sp_change_users_login 'REPORT'
EXEC sp_change_users_login 'UPDATE_ONE','<userName>','<userName>'
fonte
Você sempre pode tentar vincular novamente todos os usuários no banco de dados a logons com nomes semelhantes no servidor de banco de dados.
fonte
Eu pensei que valia a pena observar esta correção simples para o problema de pôsteres. Este é o script que eu executado no SQL Server 2008 quando eu restaurar um banco de dados de produção a partir de um servidor para banco de dados de desenvolvimento / teste em outro servidor quando o nome de usuários está na Segurança> Usuários do banco de dados MAS a
'login name'
falta da propriedade usuários no Guia geral:Referência do MSDN aqui Observe que o artigo recomenda o uso de ALTER USER para versões mais recentes do SQL.
fonte