Browse All Articles > SQL Server: "Error '15023' User or role already exists in the current database" when you perform restore database from backup
After restoring a Microsoft SQL Server database (.bak) from backup or attaching .mdf file, you may run into "Error '15023' User or role already exists in the current database" when you use the "User Mapping" SQL Management Studio functionality to allow necessary user permissions to the new database. This is puzzling enough since a database backup should bring us back to the original state. This is caused by Security Identification numbers (SID) that are mismatched or 'orphaned' in the sysusers table.
To resolve this problem, we can make use of the SQL Server stored procedure
sp_change_users_login.
From MSDN, the syntax of
sp_change_users_login is:
Lists the users and corresponding security identifiers (SID) in the current database that are not linked to any login. user, login, and password must be NULL or not specified. This step is informative and thus
optional.
Links the specified user in the current database to an existing SQL Server login. User and login must be specified. password must be NULL or not specified. The login name(s) to provide is/are from the result reported in step 2.
Repeat running 'Update_One' statement for all login names.
4. Verify all is okay now
Repeat the sql statement with Action='Report' as described in step 2 to confirm we have resolved all login names. If no records are returned after running Action='Report', we are 99% there!
Now, try logging in using the "just-fixed" SQL user login id to confirm we have resolved "Error '15023'".
TIP: You may wish to save the your sql statements into a .sql file so you can reuse it in future database migration/restore.
Comments (1)
Commented:
Voted as Good Article :)