O problema é que a restauração recupera os usuários do banco de dados da instância original do servidor, mas a nova instância normalmente não sabe nada sobre esses logons de usuário. Você os verá em Segurança no nível do banco de dados, mas eles não têm logins correspondentes no nível do servidor.
Você precisa reconectar os usuários do banco de dados com logons do servidor na instância em que restaurou o banco de dados.
Existem algumas maneiras de fazer isso:
Crie novos logins para eles na nova instância. Você precisará removê-los como usuários do banco de dados na nova instância e adicionar seus novos logins. Isso parece estranho, pois você pode criar os mesmos nomes de login, mas os SIDs (identificadores de segurança) serão diferentes e é isso que o SQL usa para identificação do usuário. Isso é fácil o suficiente para um ou dois logins.
Se você deseja manter os mesmos usuários, mantendo os mesmos SIDs, entre instâncias, use o procedimento armazenado sp_help_revlogin . Copie o código do link que criará os procedimentos armazenados necessários e execute-o no servidor do qual você deseja copiar os usuários. Ele irá gerar um script SQL que você pode executar no servidor de destino para criar os mesmos usuários carregando SIDs, senhas, tudo. Este é o caminho a seguir, se você tiver muitos usuários de banco de dados, precisará se reconectar na instância de destino ou se não souber senhas para um ou mais Logins SQL na instância de origem.
EXEC sp_change_users_login 'Auto_Fix', 'User', NULL, 'password';
vez disso. :)Aqui está o que eu encontrei.
Como squillman esperava, os usuários são copiados com o banco de dados, mas os logins não. Existe um procedimento de loja chamado sp_change_users_login que você pode usar para resolver o problema. As etapas para isso são detalhadas neste artigo . Detalhes do uso do procedimento da loja podem ser encontrados nesta página .
fonte
No SQL Server 2012, existe um comando T-SQL para atribuir usuários existentes a novos logons. Crie o logon, mas não tente fazer mapeamentos de usuários (isso falharia). Em seguida, execute:
Isso mapeará o logon existente para o novo usuário. Documentação SQL aqui: https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-user-transact-sql?view=sql-server-2017
fonte