我有一个会从我们的生产服务器每晚的基础上恢复了SQL Server 2008中的灾难恢复数据库。 每当出现这种情况,在DB休息只读访问一个特定的用户/登录。
是什么让用户/登录或者重新创建,或最好的方式db_datareader
用户映射到后DB恢复是完全还原的数据库?
我有一个会从我们的生产服务器每晚的基础上恢复了SQL Server 2008中的灾难恢复数据库。 每当出现这种情况,在DB休息只读访问一个特定的用户/登录。
是什么让用户/登录或者重新创建,或最好的方式db_datareader
用户映射到后DB恢复是完全还原的数据库?
这是造成的,因为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>;