DBAtlas · データベース運用アトラス

15023: User already exists in the current database(ユーザーは現在のデータベースに既に存在する)

SQL Server

意味

データベースに新しいユーザーを追加する際、同名のユーザーがそのデータベースに既に存在していた。ログインを既存のユーザーにマッピングする場合 (孤立ユーザー) にも発生する。

原因

典型的には、データベースをバックアップから別のサーバーにリストアすると、ログインの 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 で開く →

同じデータベースの他の項目