Eu crio um usuário no meu banco de dados com o seguinte comando:
CREATE USER Test WITHOUT LOGIN
Eu criei um login com o nome do teste.
Desejo vincular o usuário de teste ao login de teste.
Quando eu uso o seguinte comando:
EXEC sp_change_users_login 'Update_One', 'Test', 'Test'
O SQL Server levantou o erro abaixo:
Msg 15291, Level 16, State 1, Procedure sp_change_users_login, Line 114
Terminating this procedure. The User name 'Test' is absent or invalid.
E quando eu uso o seguinte comando:
ALTER USER Test WITH LOGIN = Test
SQL Server Raised Bellow error:
Msg 33016, Level 16, State 1, Line 2
The user cannot be remapped to a login. Remapping can only be done for users that were mapped to Windows or SQL logins.
Como posso vincular um usuário de teste ao login de teste.
Meu objetivo com este link: desejo restaurar um banco de dados de um servidor para outro servidor e, após a restauração completa, mapear os usuários com login existente no servidor.
desde já, obrigado.
Um usuário que foi explicitamente criado com
WITHOUT LOGIN
não pode ser mapeado para um login após o fato.Um usuário que foi criado com um login e depois perdeu sua associação, por exemplo, porque o banco de dados foi movido para outro servidor, pode ser remapeado primeiro criando um novo login (qualquer nome) e depois usando o
ALTER USER ... WITH LOGIN = ...
comando.Para demonstrar, vou criar um banco de dados
tst
e, em seguida, criar um logintstlogin
e um usuário associadotstuser
dentro detst
:Para mostrar a associação correta, podemos usar a seguinte consulta:
Isto resulta em
Agora vamos deixar o login
tstlogin
e verifique novamente nosso usuário:
que não mostra mais um login associado:
O próximo passo é criar um novo login. (Escolhi um nome diferente para fins de demonstração, mas também pode ser o mesmo nome.)
Para associar esse novo login ao nosso usuário, podemos usar a
ALTER USER
instrução:Verificando a associação mais uma vez:
mostra que a
ALTER
instrução foi bem-sucedida:Se você realmente precisar alterar um usuário "
WITHOUT LOGIN
" para um usuário "com login", será necessário descartar esse usuário e recriá-lo. Certifique-se, nesse caso, de criar o script das permissões primeiro, pois descartar um usuário faz com que o SQL Server as esqueça.