问题陈述
我们有一个200MB的站点,用于与Azure租户建立VPN连接。
我们正在通过将本地VM故障转移到Azure来测试Azure Site Recovery(ASR)。 VM托管基于Web的监视应用程序(RFCode),该应用程序连接到后端的SQL数据库。
将VM故障转移到ASR可以正常工作。但是,一旦VM在Azure中,就无法再连接回本地SQL Server。
错误是:
Could not get JDBC Connection; nested exception is java.sql.SQLException: invalid database address:
环境
问题排查
故障转移后,我们可以从Azure中的VM成功按名称ping SQL。因此,这似乎不是DNS问题(当然,通过IP ping也可以)。我们还可以从SQL主机ping回Azure中的VM。
在VM进入Azure后,我们可以将其RDP到VM中。
VM和SQL服务器均禁用Windows防火墙。据我们所知,VPN连接本身没有任何过滤。
故障转移时,应用程序本地使用的连接字符串不会更改。它可以在本地运行,并且期望它将在Azure中运行。
连接字符串中的数据库名称正确(与prem相同)
SQL中没有任何错误消息,因为它看起来好像应用程序未到达服务器。
当然,我的期望是,ASR故障转移后,Azure中的VM会连接回SQL后端,就像本地部署时一样。
还有其他建议要检查的建议吗?
这是完整的应用程序错误
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: invalid database address: jdbc:jtds:sqlserver://MyFQDNinstancename:1433/RFCodeDB;sendStringParametersAsUnicode=false;cacheMetaData=true
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80) ~[spring-jdbc-3.2.6.RELEASE.jar:3.2.6.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:382) ~[spring-jdbc-3.2.6.RELEASE.jar:3.2.6.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:428) ~[spring-jdbc-3.2.6.RELEASE.jar:3.2.6.RELEASE]
at com.rfcode.config.SystemPropertiesService.testDatabaseConnection(SystemPropertiesService.java:450) [com.rfcode.config-4.0.jar:na]
at com.rfcode.config.SystemPropertiesService.testDatabaseConnection(SystemPropertiesService.java:433) [com.rfcode.config-4.0.jar:na]
at com.rfcode.t1.service.impl.DatabaseMonitor$Monitor.testDBConnection(DatabaseMonitor.java:111) [classes/:na]
at com.rfcode.t1.service.impl.DatabaseMonitor$Monitor.run(DatabaseMonitor.java:104) [classes/:na]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_31]
Caused by: java.sql.SQLException: invalid database address: jdbc:jtds:sqlserver://MyFQDNInstancename:1433/RFCodeDB;sendStringParametersAsUnicode=false;cacheMetaData=true
at org.sqlite.JDBC.createConnection(JDBC.java:110) ~[sqlite-jdbc-3.7.15-M1.jar:na]
at org.sqlite.JDBC.connect(JDBC.java:87) ~[sqlite-jdbc-3.7.15-M1.jar:na]
at java.sql.DriverManager.getConnection(DriverManager.java:664) ~[na:1.8.0_31]
at java.sql.DriverManager.getConnection(DriverManager.java:208) ~[na:1.8.0_31]
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:173) ~[spring-jdbc-3.2.6.RELEASE.jar:3.2.6.RELEASE]
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:164) ~[spring-jdbc-3.2.6.RELEASE.jar:3.2.6.RELEASE]
at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:153) ~[spring-jdbc-3.2.6.RELEASE.jar:3.2.6.RELEASE]
at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119) ~[spring-jdbc-3.2.6.RELEASE.jar:3.2.6.RELEASE]
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111) ~[spring-jdbc-3.2.6.RELEASE.jar:3.2.6.RELEASE]
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77) ~[spring-jdbc-3.2.6.RELEASE.jar:3.2.6.RELEASE]
... 7 common frames omitted````