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');
同一数据库的其他条目
- 8114Error converting data type X to Y(将数据类型 X 转换为 Y 时出错)
- 1204The instance of the SQL Server Database Engine cannot obtain a LOCK resource(SQL Server 数据库引擎实例无法获取 LOCK 资源)
- 3906Failed to update database because the database is read-only(无法更新数据库,因为数据库为只读)
- 18452Login failed. The login is from an untrusted domain and cannot be used with Windows authentication(登录失败。该登录名来自不受信任的域,不能用于 Windows 身份验证)
- 605Attempt to fetch logical page belongs to a different allocation unit(尝试获取的逻辑页属于另一个分配单元)
- 4922ALTER TABLE ALTER COLUMN failed because one or more objects access this column(ALTER TABLE ALTER COLUMN 失败,因为有一个或多个对象访问此列)
- 7202Could not find server 'name' in sys.servers(在 sys.servers 中找不到服务器 'name')