解决SQL数据库还原后的孤立用户问题

数据库还原后,用户有时会与登录信息失去关联,变成孤立用户。以下提供几种解决方法:

方法一:使用sp_change_users_login系统存储过程

  1. 执行 EXEC sp_change_users_login 'Report' 查看孤立用户。
  2. 使用 EXEC sp_change_users_login 'Auto_Fix', '用户名' 将用户与登录名重新关联。

方法二:手动修改sysusers表

  1. 在master数据库中执行 SELECT sid FROM syslogins WHERE loginname = '登录名' 获取登录名的SID。
  2. 在还原的数据库中执行 UPDATE sysusers SET sid = '步骤1获取的SID' WHERE name = '用户名' 将用户SID更新为登录名SID。

方法三:删除并重新创建用户

如果以上方法无效,可以删除孤立用户并重新创建。注意,这会删除用户相关权限,需要重新配置。

预防措施

  • 还原数据库时,使用 WITH MOVE 选项将文件移动到新位置,避免登录名路径问题。
  • 定期备份登录名信息,以便在出现问题时恢复。

注意事项

  • 执行上述操作需要数据库管理员权限。
  • 修改系统表存在风险,建议操作前备份数据库。