解决SQL数据库还原后的孤立用户问题
数据库还原后,用户有时会与登录信息失去关联,变成孤立用户。以下提供几种解决方法:
方法一:使用sp_change_users_login系统存储过程
- 执行
EXEC sp_change_users_login 'Report'
查看孤立用户。 - 使用
EXEC sp_change_users_login 'Auto_Fix', '用户名'
将用户与登录名重新关联。
方法二:手动修改sysusers表
- 在master数据库中执行
SELECT sid FROM syslogins WHERE loginname = '登录名'
获取登录名的SID。 - 在还原的数据库中执行
UPDATE sysusers SET sid = '步骤1获取的SID' WHERE name = '用户名'
将用户SID更新为登录名SID。
方法三:删除并重新创建用户
如果以上方法无效,可以删除孤立用户并重新创建。注意,这会删除用户相关权限,需要重新配置。
预防措施
- 还原数据库时,使用
WITH MOVE
选项将文件移动到新位置,避免登录名路径问题。 - 定期备份登录名信息,以便在出现问题时恢复。
注意事项
- 执行上述操作需要数据库管理员权限。
- 修改系统表存在风险,建议操作前备份数据库。