DBAtlas · Atlas d'exploitation des bases de données

15023: User already exists in the current database (l'utilisateur existe déjà dans la base courante)

SQL Server

Que 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');

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur