使用此用户还原后,将 SQL Server 用户重新绑定到其登录名

Kor*_*esh 7 sql-server sql-server-2012 users logins

在执行 SQL Server (v12.0.2000) 数据库的还原后,我认为需要将用户重新映射到其登录名(这个问题似乎被称为孤儿用户)。最简单的方法之一是执行:

use [MyDatabase];
alter user MyUser with login = MyUser;
Run Code Online (Sandbox Code Playgroud)

然而,在实现恢复后,该USE命令失败了,因为我试图用 执行上述命令'MyUser',这是孤立的...

因为它是在脚本中,所以我想避免restore与一个用户和alter user另一个用户执行 a ,以便第一个用户正确地重新映射到其登录名。

有没有办法用“MyUser”来做到这一点(谁可以毫无问题地连接到主人)?

我通过以下方式完全限定“MyUser”进行了尝试,但没有成功:

use master;
alter user MyDatabase.MyUser with login = MyUser;
Run Code Online (Sandbox Code Playgroud)

知道这是否可能以及如何做到吗?

Ken*_*her 3

很不幸的是,不行。请记住,数据库主体和服务器主体是两个独立的对象。在修复孤立用户之前,即使数据库中 调用了孤立用户,服务器主体也MyUser无法访问。MyDatabaseMyUser

修复孤儿的另一种方法是更改​​服务器主体的 SID 以匹配数据库主体的 SID。这确实存在在其他数据库中创建孤立数据库的风险,更重要的是,在这种情况下,您必须删除主体并使用新的 SID 重新创建它。使用该特定 ID 当然是不可能的。

您唯一的方法是使用具有适当权限的单独 ID 来解决此问题。这可能是具有 sysadmin 权限的 ID(即使没有关联的数据库主体,也具有连接到数据库的权限)或对数据库具有 DBO 访问权限的 ID。请注意,这些只是示例,还有其他几个可用权限允许您修改服务器/数据库主体。