gpt4 book ai didi

sql-server - 如何处理 "remapping can only be done for users that were mapped to Windows or SQL logins"

转载 作者:行者123 更新时间:2023-12-05 05:28:41 24 4
gpt4 key购买 nike

场景:

尝试从从 SQL Azure 获取的 bacpac 恢复。

新的 SQL Azure 数据库实例或本地服务器。对于较早的管理门户或 DAC Framework Client Side Tools .

似乎工作正常,恢复后 SQL 用户自然不会映射到 SQL 登录名。

我尝试了什么:

当我尝试将其映射为:用 login = MyLogin 改变用户 MyUser,它失败了:

Msg 33016, Level 16, State 1, Line 6 The user cannot be remapped to a login. Remapping can only be done for users that were mapped to Windows or SQL logins.

运行 select * from sys.database_principals 确实列出了用户,但 SID 比我创建的用于比较的 SQL 身份验证用户长得多。

如果我在本地运行 sp_change_users_login 'Report',用户将列出,因此不会被检测为孤立

如果我在本地尝试使用 sp_change_users_login,它会失败并显示:

Msg 15291, Level 16, State 1, Procedure sp_change_users_login, Line 114 Terminating this procedure. The User name 'MyUser' is absent or invalid.

如果我通过登录属性 UI 的用户映射部分进行尝试,我会得到:

Create failed for User 'My User'. ... User, group, or role 'MyUser' already exists in the current database.

我试着重新做一遍,以防万一 was corrupted由于某种原因恢复时,结果相同。

问题:

如何重新映射这些 SQL 用户?

我想避免必须从头开始重新创建它们以及它们与数据库中模式对象的任何关系?

一些额外信息:

一种类型的 SQL 用户看起来很像我在 SQL Azure 用户中看到的,是用

无需登录创建用户 AnotherUser

在我上面使用的所有 3 种映射方法中,它们以完全相同的方式失败。对于常规 SQL 用户,任何方法都不是这种情况。此外,sid 也很长,并且以相同的“0x010500000000000903000000”开头

最佳答案

A sqlmatters article解释说

A user without login is a special type of user that has deliberately been set up without an associated login.

可以通过检查 SID 来检查是否属于这种情况:

 -- SQL to run to identify users without login :
SELECT CASE WHEN DATALENGTH(sid) = 28
AND type = 'S' -- only want SQL users
AND principal_id > 4 -- ignore built in users
THEN 1 ELSE 0 END AS is_user_without_login,*
FROM sys.database_principals

未登录的用户的 SID 比普通(孤立)用户长。

这些特殊用户无法映射到登录名,因为它们是这样创建的。一定有人有意或无意地创建了一个用户 WITHOUT LOGIN

关于sql-server - 如何处理 "remapping can only be done for users that were mapped to Windows or SQL logins",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8705694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com