我在实例A上配置了多个SQL Server登录名。这些SQL Server登录名显式映射到特定数据库。因此,这些数据库在其安全容器中将登录名列为用户。当我将备份从实例A恢复到实例B时,数据库级别的用户变成了“未登录的用户”。用户存在于实例B中的服务器级别,这不是孤立登录的情况。从字面上看,它变成了“没有登录的SQL用户”,而不是“有登录的SQL用户”。有没有人有什么办法来解决这个问题?到目前为止,我已经用尽了所有的选择。除了在数据库级别删除用户并将其添加到该数据库的服务器级别的登录名之外,似乎什么都不起作用。然而,我不能继续这样做,因为这是自动化过程的一部分。
发布于 2019-05-22 03:31:03
问题是您没有在实例B中正确创建登录名,因此它们与实例A中的登录名具有不同的SID。数据库用户引用的是SID,而不是登录名,因此,尽管登录名相同,但数据库用户看不到具有其附加到的SID的登录名。
因此,您需要从实例B中删除应该与实例A中的登录信息相同的登录信息,然后使用https://support.microsoft.com/en-us/help/918992/how-to-transfer-logins-and-passwords-between-instances-of-sql-server中的sp_help_revlogin将这些登录信息复制到实例B中。
您只需要在要从中复制登录的实例上创建sp_hexadecimal和sp_help_revlogin存储过程,但将其放在所有实例上也没有什么坏处。
https://stackoverflow.com/questions/56243855
复制相似问题