我设置了一个SQL Server作业备份和validation我所有的数据库
这样做后,我的大部分数据库中的用户不再列出。 用户在那里,但没有关联。
这会导致什么?
你是否在不同的服务器实例上恢复数据库? 数据库用户(在数据库级别的“安全”下列出)与服务器实例login(在服务器级别的“安全”下列出)不同。 如果您将数据库还原到其他实例,那么通常数据库用户将被解除关联,因为服务器实例login在目标实例上不存在。 即使您在与oringal实例具有相同名称的目标实例上创build了一个login名,也不会起作用,因为新login名具有不同的安全标识符(SID)。
您可以使用sp_help_revlogin存储过程在服务器实例之间复制login名。 这将生成一个脚本,它将使用相同的SID,密码和所有内容创buildlogin。 在目标服务器上运行脚本,数据库用户将再次与服务器login关联。
源代码和更多关于如何使用sp_help_revlogin可以在这里find。
数据库是否恢复到不同的服务器? 如果是这种情况,那么任何SQL Serverlogin的SID将在该服务器上不同。 数据库用户被映射到基于SID的login,所以用户最终成为孤儿。
要更新用户以匹配现有login,请使用以下查询:
ALTER USER用户名与login=login名