在 SQL Server 2005 中将数据库备份并还原到另一台服务器后用户无法运行

在 SQL Server 2005 中将数据库备份并还原到另一台服务器后用户无法运行

我们在第一个名为“SQL01”的 SQL 服务器实例上有一个名为“foo”的数据库,该数据库每晚通过 Snap Manager for SQL Server 的快照进行备份,然后 flex 克隆并恢复到第二个名为“SQL02”的服务器实例。在数据库 foo 中,有一个名为“someuser”的 SQL 用户,具有数据读取器和存储过程权限。

恢复操作后,我无法使用 someuser 用户访问 SQL02 上的 foo 数据库。我可以看到权限似乎已为该用户正确设置,但无法访问数据库。错误是“服务器主体“someuser”无法在当前安全上下文中访问数据库“foo”。

如果我从数据库中删除用户,然后再次添加,则一切正常。有什么想法吗?

答案1

sp_change_users_login 是一种旧的做事方式,由于您正在使用 SQL Server 2005,请尝试使用 ALTER USER 语法。

http://sqlblog.com/blogs/greg_low/archive/2009/02/02/much-ado-about-logins-and-sids.aspx

http://msdn.microsoft.com/en-us/library/ms176060.aspx

答案2

查看更改用户登录 执行 sp_change_users_login '报告',如果有结果,则使用 sp_change_users_login 'autofis','someuser'

答案3

您可能会发现需要从已恢复的数据库中删除该用户,然后在服务器安全下打开该用户并将其权限再次设置到该数据库中

答案4

为了避免此问题,请将您的用户(正在进行备份的用户)添加为备份数据库的用户,并且您的用户应该在新实例中具有(登录)访问权限。

相关内容