DBAtlas · Атлас эксплуатации баз данных

15023: User already exists in the current database

SQL Server

Что это значит?

При добавлении нового пользователя в базу данных обнаружено, что пользователь с таким же именем в этой базе данных уже существует. Также появляется при сопоставлении имени входа с существующим пользователем (потерянные пользователи, orphaned users).

Почему возникает?

Обычно при восстановлении базы данных из бэкапа на другом сервере SID имён входа не совпадают с пользователями базы данных (потерянные пользователи). Попытка повторно добавить то же имя через CREATE USER или вручную настроить сопоставление имени входа и пользователя вызывает эту ошибку.

Как исправить

Повторно сопоставьте потерянного пользователя с существующим именем входа: ALTER USER app_user WITH LOGIN = login_name; (рекомендуется вместо устаревшей sp_change_users_login). Если пользователь действительно лишний: DROP USER app_user; Чтобы найти потерянных пользователей: 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');

Открыть в DBAtlas →

Ещё по этой СУБД