Quando executo este SQL:
USE ASPState
GO
IF NOT EXISTS(SELECT * FROM sys.sysusers WHERE NAME = 'R2Server\AAOUser')
CREATE USER [R2Server\AAOUser] FOR LOGIN [R2Server\AAOUser];
GO
Estou tendo o erro a seguir:
O login já tem uma conta com um nome de usuário diferente.
Como posso saber qual é esse nome de usuário diferente para minha conta de login?
Isso significa que o logon [R2Server\AAOUser] já está mapeado para um usuário nesse banco de dados. Ou, em outras palavras, outro usuário do banco de dados está usando este login. Você pode ver qual usuário do banco de dados está usando seu login com a seguinte consulta:
PS: uma versão do script que não usa as visualizações de compatibilidade:
É uma 'coisa de metadados' ...
Às vezes, o usuário do banco de dados é 'corrompido' ao longo do que quer que esteja acontecendo nesse banco de dados. (Vi um comportamento semelhante se o banco de dados for restaurado e as funções na cópia restaurada forem diferentes daquela que você sobrepôs. É por isso que tentei abaixo, que corrigiu o problema para mim.)
Abra as propriedades de logon no SSMS --> (Segurança | Logons | ID de usuário com falha | Propriedades | Mapeamento de usuário). Você provavelmente verá que o banco de dados já está marcado e tem funções atribuídas (como perfeitamente normal).
Observe as permissões no banco de dados que estão dando o erro, apenas para referência.
Já me deparei com um problema semelhante : adicionei por engano um usuário em um banco de dados, sem especificar o prefixo DOMAIN, ou seja, "joe", em vez de "DOMAINX\joe". Após esse erro, o SSMS se recusará a renomear ou descartar o nome de usuário com uma mensagem de erro enigmática em relação a um "principal".
Solução: