恢复用户映射之后SQL Server登录2008数据库恢复(Restoring user mappi

2019-10-22 19:23发布

我有一个会从我们的生产服务器每晚的基础上恢复了SQL Server 2008中的灾难恢复数据库。 每当出现这种情况,在DB休息只读访问一个特定的用户/登录。

是什么让用户/登录或者重新创建,或最好的方式db_datareader用户映射到后DB恢复是完全还原的数据库?

Answer 1:

这是造成的,因为SQL登录和SQL用户使用SID作为实际鉴定,和SID不匹配,因为它们是由每个服务器单独产生。 Windows用户和登录使用SID从域,所以他们的工作就好了。 登录像sa和用户喜欢dbo使用众所周知的SID被固定。

你应该有修复ALTER USER :

ALTER USER <UserName> WITH LOGIN <LoginName>;

但是,IMX,大多数人仍然使用sp_change_users_login ,即使它否决。 这是一个有点更方便,因为它不需要你手动指定一切,你可以重新映射多次登录同一个命令。

--List orphaned users
EXEC sp_change_users_login @Action = 'Report';

--Auto remap users to logins that have the same name
EXEC sp_change_users_login @Action = 'Auto_Fix';

--Manual remap
EXEC sp_change_users_login @Action = 'Update_One', @UserNamePattern = <UserName>, @LoginName = <LoginName>;


文章来源: Restoring user mapping to login after SQL Server 2008 database restore