如何恢复数据库,以便可以在没有安全管理员角色的服务器上使用它

如何恢复数据库,以便可以在没有安全管理员角色的服务器上使用它

在 SQL 2008 实例上,我有一个具有 dbcreator 和 public 角色的登录名。当我将数据库还原到此服务器上时,我无法使用该数据库,因为其中的所有用户 -> 登录名映射都已损坏(不同服务器上的 ID 不同)。

有一个 sp_change_users_login 'Auto_Fix', userName 存储过程,但我无法使用它,因为我首先无法访问数据库。最后,由于我没有 securityAdmin 角色,我无法将任何登录名映射到数据库用户。

有没有办法让我自己有权在恢复过程中访问数据库?

答案1

授权管理员可以编写一个辅助程序来修复映射。然后,它可以对该程序进行签名,并通过代码签名为该程序提供必要的授权(请参阅对存储过程进行签名)。然后它可以授予您此辅助程序的执行权限,并且您将能够在没有 securityAdmin 权限的情况下执行操作(修复损坏的登录)。

答案2

不,抱歉。

“securityAdmin” 处于服务器级别,与任何数据库权限无关

注意(仅供参考,目前用处不大!)此问题已针对 SQL Server 2011(又名 Denali)的“包含数据库”进行了修复

答案3

据我所知,您需要一个拥有 dbo 的人来帮您修复这个问题。我可能错了,也许有后门方法 - 但这基本上是按照设计进行的。您只有 dbcreator,因此一旦创建了数据库,您就无法在数据库内部乱搞。

答案4

我最终的解决方案是批量导入数据库中的每个表,而不是恢复。

相关内容