无法通过将Listerner地址与只读一起使用来访问SQL Server

时间:2018-06-28 03:39:15

标签: sql-server alwayson

我有两个SQL Server实例作为AlwaysOn主实例运行-副本。现在,我想在副本中设置连接读取数据库。我刚刚按照以下说明设置了SQL Server:https://blogs.msdn.microsoft.com/alwaysonpro/2013/07/01/end-to-end-using-a-listener-to-connect-to-a-secondary-replica-read-only-routing/

现在一切正常。但是,如果我不使用参数readonly,则可以通过从外部使用侦听器地址来访问SQL Server。在内部网络中可以

外部网络

sqlcmd -S <IP Listerner> -U <username> -P <password> -d <db name> -K readonly --> not connect
sqlcmd -S <IP Listerner> -U <username> -P <password> -d <db name> --> connected

内部网络

sqlcmd -S <IP Listerner> -U <username> -P <password> -d <db name> -K readonly --> connected
sqlcmd -S <IP Listerner> -U <username> -P <password> -d <db name> --> connected

2 个答案:

答案 0 :(得分:0)

可能是防火墙阻止了某些端口。确保在防火墙中打开了端口5022(默认端口)和用于侦听器的端口。

答案 1 :(得分:0)

我遇到了同样的问题并已解决。

外部网络只知道您在主节点上的 ListenerName。 您需要做的就是让外部网络知道您的所有节点。

像这样更改外部网络服务器中的主机文件。

  • 192.168.1.1 node1.yourdomain
  • 192.168.1.2 node2.yourdomain