登录不会跨可用性组同步

Joh*_*ohn 13 sql-server sql-server-2012 availability-groups logins

我们在 AlwaysOn 组中有 2 台服务器。

虽然每个同步数据库中的用户帐户都存在于两台服务器上,但数据库实例级登录仅存在于其中一台服务器上。即 DBINSTANCE->Security->Logins 在一台服务器上丢失。

因此,当发生故障转移时,我会在第二台服务器(没有相应的实例级别登录)上登录失败。

我如何克服这个问题?我应该以特殊方式设置用户帐户吗?

Mar*_*ith 15

我的理解是,如果您不使用Contained Databases,则必须确保在其他实例上手动创建登录名。

类似于SQLSoldier的脚本,最初发布在文章Transferring Logins to a Database Mirror 上,应该可以解决问题。


Joh*_*ohn 7

您必须使用包含的数据库,或者必须使用相同的密码哈希和 SID 在其他服务器上重新创建用户。

Microsoft 提供了执行此操作的脚本: 如何在 SQL Server 实例之间传输登录名和密码

Mark 的解决方案部分正确,但他推荐的解决方案是针对镜像数据库,而不是问题所要求的 AlwaysOn。

  • 镜像数据库的解决方案与可用性组的解决方案有何不同(注意:AlwaysOn 是一系列技术的营销标签,而不是功能)?博客文章的标题不会改变它正在恢复丢失的登录的事实——这本身与您是否使用镜像、可用性组、日志传送、手动备份/恢复等无关。 (2认同)