为没有登录名的 SQL 用户分配登录名

为没有登录名的 SQL 用户分配登录名

环境:SQL Server 2012 Express Edition 和 Microsoft SQL Server Management Studio。所有用户都是本地 SQL 用户,而不是 Windows 身份验证。

我附加了一个来自另一台 SQL 服务器的数据库文件。在“服务器/数据库/导入的数据库/安全/用户”节点中,它包含该数据库的用户,但其类型为“未登录的 SQL 用户”。看来他们无法登录此 SQL 服务器。

起初我以为可以在“服务器/安全/登录”中创建具有相同 ID 的用户,并将其映射到导入数据库中的用户。它创建了用户,但出现错误(用户已存在),导入数据库中用户的状态仍为“未登录的 SQL 用户”

我搜索了 Google,但所有答案都是一些复杂的脚本。如果这是一种常见情况,为什么没有简单的 GUI?让导入数据库中的用户能够使用相同凭据登录的最简单方法是什么?

答案1

没有 GUI,您必须手动完成。

首先,您必须区分 SQL 用户和登录名。

A登录与 SQL Server 实例相关,并具有服务器上的权限。一个登录名可以与多个用户相关联。

A用户与数据库相关并对特定数据库具有权限。

主体(数据库引擎)

当您附加在另一台服务器上创建的数据库时,您会在原始服务器上传输与其关联的登录名,但不会传输 SQL 登录名,因为它们是在服务器上定义的,而不是在数据库中定义的。数据库备份或 MDF 和 LDF 文件不包含有关 SQL 登录的信息,只包含有关数据库用户的信息。因此,出现错误消息。

使用此处给出的步骤和脚本将原始登录信息转移到新的 SQL Server 实例:如何在 SQL Server 实例之间传输登录名和密码

相关内容