Sql server错误15023:用户或角色已经存在于当前数据库中
将远程服务器上的数据库备份恢复到本地计算机后,如果“用户”与“登录”(用户映射)相关联,则会出现错误:“错误15023:用户或角色已存在于当前数据库中”
原因:
sql server中“登录”和“用户”的区别。登录用于用户认证,而数据库“用户”帐户用于数据库访问和权限认证。通过登录安全标识符(SID)与用户相关联。当数据库恢复到另一个服务器时,数据库包含一组用户和权限,但是可能没有相应的登录,或者与登录相关联的用户可能不是相同的用户。这种情况被称为“孤立用户”的存在。此时,您无法通过创建新的登录名或将相应数据库的“用户”权限授予同名登录名来解决登录问题,因为SQL Server会报告“错误15023:用户或角色已存在于当前数据库中”
解决:
要解决这个问题,需要调用系统存储过程sp_change_users_login。具体用法如下:
使用Northwind gosp _ change _ users _ log in ' update_one '' test '' test '其中north wind是包含孤立用户的数据库,update _ one是存储过程的参数,表示只处理一个用户。前面的测试是“用户”,后面的测试是“登录”。上面的SQL表明服务器将登录到“test”和northwind数据库。这样数据库才能正常使用。