无法从Azure VM访问Azure SQL Server

gxwragnw  于 2022-11-17  发布在  SQL Server
关注(0)|答案(1)|浏览(243)

遵循Microsoft提供的Azure VM集群教程(https://learn.microsoft.com/en-us/azure/developer/terraform/create-vm-cluster-with-infrastructure),
我在Azure中创建了一个资源组。在该资源组下,我创建了VN、子网等。
现在,我在资源组中创建了两个虚拟机。它们都有一个负载平衡器。我已经向LB添加了NAT规则以连接到单个示例,同时它们共享相同的前端IP。

我已经创建了一个新的资源Azure MSSQL服务器,在SQL服务器的防火墙规则中,将LB的public ip添加到Azure Server

我现在已登录到各个虚拟机,并尝试从虚拟机访问SQL Server,但无法连接到它。
我尝试了正常ping <hostname>,但失败133 packets transmitted, 0 received, 100% packet loss, time 295ms
然后,我尝试从IP地址telnet(IP地址是通过ping接收的),并得到

Trying <ip_address>...
Connected to <ip_address>.
Escape character is '^]'.

当我尝试使用应用程序进行连接时,出现此错误

com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset ClientConnectionId:8b2f0e3b
-fda0-41af-b8dc-ce80d0760b82
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.jav
a:3806) ~[mssql-jdbc-11.2.0.jre8.jar:?]
        at com.microsoft.sqlserver.jdbc.TDSChannel.read(IOBuffer.java:2109) ~[mssql-jdbc-11.2
.0.jre8.jar:?]
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.prelogin(SQLServerConnection.java
:3517) ~[mssql-jdbc-11.2.0.jre8.jar:?]
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection
.java:3325) ~[mssql-jdbc-11.2.0.jre8.jar:?]
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:29
50) ~[mssql-jdbc-11.2.0.jre8.jar:?]
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnecti
on.java:2790) ~[mssql-jdbc-11.2.0.jre8.jar:?]
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:
1663) ~[mssql-jdbc-11.2.0.jre8.jar:?]
        at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1064) ~[
mssql-jdbc-11.2.0.jre8.jar:?]
        at jet.server.db.core.ConnectorManager$ConnectionPool.£(ConnectorManager.java:712) ~[
JRESServlets.jar:?]
        at jet.server.db.core.ConnectorManager$ConnectionPool.connect(ConnectorManager.java:4
32) ~[JRESServlets.jar:?]
        at jet.server.db.core.ConnectorManager$ConnectionPool.getConnection(ConnectorManager.
java:504) ~[JRESServlets.jar:?]
        at jet.server.db.core.ConnectorManager$ConnectionPool.getConnection(ConnectorManager.
java:487) ~[JRESServlets.jar:?]
        at jet.server.db.core.DatabaseImpl.open(DatabaseImpl.java:839) ~[JRESServlets.jar:?]
        at jet.server.db.core.GlobalDataService.<init>(GlobalDataService.java:103) ~[JRESServ
lets.jar:?]
        at jet.server.db.core.GlobalDataService.init(GlobalDataService.java:37) ~[JRESServlet
s.jar:?]
        at jet.server.ServerEnv.K(ServerEnv.java:2322) ~[JRESServlets.jar:?]

我该怎么做?

qnakjoqk

qnakjoqk1#

Azure SQL只能通过TCP端口**1433使用请检查防火墙是否允许端口1433**上传出TCP通信

您可以使用以下命令检查连接:

Test-NetConnection -Port 1433 -ComputerName ServerName.database.windows.net

若要解决错误,请确保从服务器打开路径中的防火墙,如Windows防火墙、企业防火墙或Azure NSG(网络安全组)以允许访问。

  • 在Azure SQL Server中,选择“网络”并启用以下选项:*

连接到Azure虚拟机并重新启动SQL Server,如下所示:

参考:

Azure SQL数据库服务器|微软学习

相关问题