如何修复名称中包含斜杠的SQL Server孤立用户
修复带斜杠的SQL Server孤立用户解决方案
报错原因
sp_change_users_login系统存储过程仅支持SQL身份验证的用户映射,无法处理带有反斜杠的Windows身份验证账号(域账号、本地Windows账号/组),因此传入Windows主体名称会被判定为无效。
解决步骤
1. 提前校验账号存在(推荐执行,排除拼写错误)
分别查询确认数据库用户和实例登录名真实存在:
- 查询当前数据库下的目标用户:
SELECT name FROM sys.database_principals WHERE type IN ('U', 'G') AND name = 'acc\windows_groupAccounting';
- 查询SQL Server实例层面的目标登录名:
SELECT name FROM sys.server_principals WHERE type IN ('U', 'G') AND name = 'acc\windows_groupAccounting';
两个查询均返回对应名称后再执行后续映射操作。
2. 用ALTER USER语句完成映射
SQL Server 2005及以上版本均支持ALTER USER作为sp_change_users_login的替代方案,原生支持Windows身份验证主体的映射:
ALTER USER [acc\windows_groupAccounting] WITH LOGIN = [acc\windows_groupAccounting];
执行成功即可完成孤立用户修复。
内容的提问来源于stack exchange,提问作者JM1
相关产品推荐
相关产品推荐

