SQL Server 备份和验证 - 删除了所有用户?

SQL Server 备份和验证 - 删除了所有用户?

我设置了一个 SQL Server 作业来备份和验证我的所有数据库

执行此操作后,在我的大多数数据库中,该用户不再列出。该用户还在那里,但没有关联。

什么原因造成这种情况?

答案1

您是否在不同的服务器实例上恢复数据库?数据库用户(在数据库级别的安全性下列出)与服务器实例登录名(在服务器级别的安全性下列出)不同。如果您将数据库恢复到不同的实例,则通常数据库用户将被解除关联,因为服务器实例登录名不存在于目标实例上。即使您在目标实例上创建与原始实例同名的登录名,它也不会起作用,因为新登录名具有不同的安全标识符 (SID)。

您可以使用sp_help_revlogin存储过程在服务器实例之间复制登录名。这将生成一个脚本,该脚本将使用相同的 SID、密码等创建登录名。在目标服务器上运行该脚本,数据库用户将再次与服务器登录名相关联。

源代码和更多关于如何使用的信息sp_help_revlogin可以在这里

答案2

数据库是否已还原到其他服务器?如果是这种情况,则该服务器上任何 SQL Server 登录的 SID 都将不同。数据库用户根据 SID 映射到登录,因此用户最终会变得孤立。

要更新用户以匹配现有登录,请使用以下查询:

ALTER USER 用户名 WITH LOGIN = loginname

相关内容