我正在尝试让数据库镜像在高安全模式下正常工作并实现自动故障转移。我在 Windows Server 2012 R2 上安装了 SQL Server 2014 的命名实例作为我的主服务器和镜像服务器。我在 Windows Server 2016 上安装了另一个 SQL Server Express 2014 的命名实例作为我的见证服务器。我遇到了很多麻烦,这一切似乎都与 Windows 防火墙的奇怪行为有关。
在镜像的初始设置过程中,我在数据库镜像安全向导中无法连接到辅助服务器和见证服务器,并且在尝试启动镜像时出现错误 1418。在所有情况下,我都必须在各个服务器上暂时禁用 Windows 防火墙。然后我能够完成向导并启动镜像,没有任何错误。
我已经在所有服务器上打开了端口 1433 和 5022。我还尝试根据我找到的其他信息打开端口 135、137、138、139 和 1434,但这没有帮助。唯一有效的方法是在配置和启动镜像的过程中关闭所有三台服务器上的 Windows 防火墙。然后我能够将其重新打开,镜像继续工作。
但是现在,如果我打开主服务器上的数据库镜像监视器并重新启动镜像服务器,镜像将无法重新连接,除非我再次暂时禁用 Windows 防火墙。一旦重新连接,我可以重新打开防火墙,它将继续工作,直到下次重新启动。
如果我在重新启动之前禁用 Windows 防火墙,则当服务器重新启动时它将自动重新连接,然后我可以再次启用防火墙,并且它将继续工作,即使在后续重新启动后,直到我进行故障转移。然后主服务器成为镜像服务器,反之亦然,我在新镜像(前主服务器)上遇到同样的问题。然后我必须在新镜像上采取与上述相同的步骤才能使其连接。
现在,尽管我说过如果我禁用原始镜像上的 Windows 防火墙,重新启动,然后重新启用防火墙,镜像将能够在随后的重新启动后自动重新连接,但是一旦我故障转移到镜像,如果我随后故障恢复到原始主体,重新启动后自动重新连接的能力将丢失,我将不得不再次禁用防火墙,重新启动并重新启用。
显然,这种行为远非理想。我需要一切都按预期自动工作和连接。有人能帮我解决这个问题吗?