15023: User already exists in the current database (l'utilisateur existe déjà dans la base courante)
SQL ServerQue signifie cette erreur ?
Lors de l'ajout d'un nouvel utilisateur à la base, un utilisateur du même nom existait déjà dans cette base. Apparaît aussi lors du mappage d'un login vers un utilisateur existant (utilisateurs orphelins).
Cause
Typiquement, lorsqu'une base est restaurée depuis une sauvegarde sur un autre serveur, les SID des logins ne correspondent pas aux utilisateurs de la base (utilisateurs orphelins). Tenter d'ajouter de nouveau le même nom avec CREATE USER, ou de mettre en place manuellement le mappage login-utilisateur, lève cette erreur.
Comment la corriger
Remappez l'utilisateur orphelin sur le login existant : ALTER USER app_user WITH LOGIN = login_name; (recommandé plutôt que l'ancien sp_change_users_login). Si l'utilisateur est réellement superflu : DROP USER app_user; Pour trouver les orphelins : 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');
Autres entrées pour ce moteur
- 8114Error converting data type X to Y
- 1204The instance of the SQL Server Database Engine cannot obtain a LOCK resource (l'instance du moteur SQL Server ne peut pas obtenir de ressource LOCK)
- 3906Failed to update database because the database is read-only (échec de la mise à jour : la base est en lecture seule)
- 18452Login failed. The login is from an untrusted domain and cannot be used with Windows authentication (échec de connexion : login provenant d'un domaine non approuvé, inutilisable avec l'authentification Windows)
- 605Attempt to fetch logical page belongs to a different allocation unit (la page logique lue appartient à une autre unité d'allocation)
- 4922ALTER TABLE ALTER COLUMN failed because one or more objects access this column (échec d'ALTER TABLE ALTER COLUMN : un ou plusieurs objets accèdent à cette colonne)
- 7202Could not find server 'name' in sys.servers (serveur 'name' introuvable dans sys.servers)