15023: User already exists in the current database (o usuário já existe no banco atual)
SQL ServerO que significa?
Ao adicionar um novo usuário ao banco, verificou-se que um usuário com o mesmo nome já existe nesse banco. Também ocorre ao mapear um login para um usuário existente (orphaned users).
Por que acontece?
Normalmente, quando um banco é restaurado a partir de backup em outro servidor, os SIDs dos logins não correspondem aos usuários do banco (orphaned users). Tentar adicionar o mesmo nome novamente com CREATE USER ou configurar manualmente o mapeamento login-usuário gera este erro.
Como resolver
Remapeie o usuário órfão para o login existente: ALTER USER app_user WITH LOGIN = login_name; (recomendado em vez do legado sp_change_users_login). Se o usuário for realmente redundante: DROP USER app_user; Para encontrar órfãos: SELECT dp.name FROM sys.database_principals dp LEFT JOIN sys.server_principals sp ON dp.sid = sp.sid WHERE sp.sid IS NULL AND dp.type IN ('S','U');
Mais entradas deste banco
- 8114Error converting data type X to Y
- 1204The instance of the SQL Server Database Engine cannot obtain a LOCK resource (a instância do SQL Server Database Engine não consegue obter um recurso LOCK)
- 3906Failed to update database because the database is read-only (não foi possível atualizar o banco porque ele é somente leitura)
- 18452Login failed. The login is from an untrusted domain and cannot be used with Windows authentication (falha no login; o login vem de um domínio não confiável e não pode ser usado com autenticação do Windows)
- 605Attempt to fetch logical page belongs to a different allocation unit (a página lógica solicitada pertence a outra allocation unit)
- 4922ALTER TABLE ALTER COLUMN failed because one or more objects access this column (ALTER TABLE ALTER COLUMN falhou porque um ou mais objetos acessam esta coluna)
- 7202Could not find server 'name' in sys.servers (o servidor não foi encontrado em sys.servers)