sqlserver还原数据库后登录名消失问题(修复孤立的账户)

2023-03-22 00:00:00 用户 数据库 指定 映射 登录名

昨天晚上进行了数据库迁移,完成后发现与第三方软件做接口时提供的只读账户不见了。查了各种资料,终于找到了官方文档(链接放在文尾)。

首先可以用exec sp_change_users_login 'REPORT' 来查看有哪些未指定数据库实例的用户(即像我这样换了服务器后还原出来的数据库实例里边没有了以前创建的指定权限的登录名(被孤立的账户))

Report :列出当前数据库中未链接到任何登录名(我理解为数据库实例名)的用户和相应的安全标识符(SID)。用户,不用指定登录名和密码。

要用使用系统表的查询代替报表选项,请将sys.server_prinicpals中的条目与sys.database_principals中的条目进行比较。

Auto_Fix :在当前数据库的sys.database_principals系统目录视图中,将一个用户条目与同名的SQL Server登录名相印证。如果不存在同名的登录名,则会创建一个。

检查 Auto_Fix 语句的结果,以确认是否真的建立了正确的链接。避免在安全敏感的情况下使用 Auto_Fix。

当你使用Auto_Fix时,如果登录不存在,你必须指定用户和密码,否则你必须指定用户,但密码将被忽略。login不能有其他用户映射到它。

下面的例子显示了如何使用将现有用户映射到同名的登录名,或者在登录名不存在的情况下创建具有密码的SQL Server登录名.Auto_Fix yh wxl.1989。

注意! 此处必须使用强密码! 否则报错~~

EXEC sp_change_users_login 'Auto_Fix', 'yh', NULL, 'wxl.1989';

相关文章