我们有一个数据库备份,我们需要在没有数据库登录名的服务器上恢复...虽然所有用户都在数据库中,所以我们希望我们可以通过这种方式恢复它?
我玩过 sp_change_users_login 但它只适用于创建新用户或将孤立的数据库用户链接到现有服务器用户(SID 不匹配但用户名相同)。
我需要从存储在数据库中的用户信息创建服务器登录。
我们有一个数据库备份,我们需要在没有数据库登录名的服务器上恢复...虽然所有用户都在数据库中,所以我们希望我们可以通过这种方式恢复它?
我玩过 sp_change_users_login 但它只适用于创建新用户或将孤立的数据库用户链接到现有服务器用户(SID 不匹配但用户名相同)。
我需要从存储在数据库中的用户信息创建服务器登录。
如果您的目标是使用相同的密码重新创建登录名,那么您就是 SOL,这仅存储在主数据库的表/视图中。如果旧实例仍然存在,Brian 的建议将起作用,但如果没有,那么您将需要执行以下选项之一。
或者
请注意,这仅适用于 SQL 登录,如果您使用的是 Active Directory 登录,那么您只需将它们添加回服务器,它们将自动在恢复的数据库中拥有权限,因为密码和 SID 存储在 AD 中而不是在实例的主数据库中。
我认为您没有足够的有关数据库中用户的信息来创建登录名。登录特定信息驻留在主数据库中,而数据库用户信息(包括映射)驻留在各个数据库中。
如果原始服务器可用,则有一个名为 sp_rev_login 的系统存储过程,您可以从这篇Microsoft 支持文章中创建该过程,该过程将编写登录信息,包括正确的 SID。然后,您可以协调用户的登录。
我有一个不错的脚本,可用于从数据库用户创建登录,该脚本使用存储过程,您可以在以下 URL 中找到: How to script logins from user database in SQL Server 2005
尝试
您从第一次查询中找到的一个用户名在哪里,并且是您要分配给用户的新密码。
我无耻地重新发布了我刚刚在 - http://tim-stanley.com/post/how-to-restore-a-sql-user-after-a-sql-database-restore/上找到的信息,认为这会很有用为他人。
这个脚本在我的数据库中工作
--注意:在sql2000中使用-> master..syslogins.sid = sysusers.sid
创建登录名,然后使用: