通过Java JDBC从Azure VM获得Azure SQL数据库连接问题

问题描述 投票:0回答:1

我们在Azure虚拟机(VM)中有一个Java项目,并且需要通过JDBC连接连接到Azure SQL数据库,因此我们使用Azure SQL数据库提供的JDBC连接字符串如下:

"jdbc:sqlserver://ZZZdbserver.database.windows.net:1433;database=ZZZ;user=*****;password=*****;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;"

但我们有一个例外:

"java.security.cert.CertificateException: Failed to validate the server name in a certificate during Secure Sockets Layer (SSL) initialization.
 The server name is *.database.windows.net, the name in certificate is cr2.eastus1-a.control.database.windows.net."

然后我们将JDBC连接字符串更新为:

"jdbc:sqlserver://ZZZdbserver.database.windows.net:1433;database=ZZZ;user=*****;password=*****;encrypt=true;trustServerCertificate=false;hostNameInCertificate=cr2.eastus1-a.control.database.windows.net;loginTimeout=30;"

但我们还有另一个例外:

org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Cannot open server "ZZZ1" requested by the login.  The login failed.)

其中“ ZZZ1”是我们用于Azure VM的用户名。

有解决这个问题的主意吗?

java sql azure jdbc
1个回答
0
投票

默认情况下,Azure VM尚未阻止与Internet的出站连接。您可以首先通过运行CMD中的命令telnet ZZZdbserver.database.windows.net 1433或Powershell中的Test-NetConnection -computer ZZZdbserver.database.windows.net -port 1433来验证从VM到Azure SQL数据库的网络连接。如果失败,则可以检查是否有任何防火墙阻止此数据库连接或端口,或者您的应用程序正在该端口上侦听,或者您的SQL数据库处于联机状态。

此外,如果网络连接成功,则可以在用于连接数据库时验证用户名或密码是否正确。确保没有任何错字。此外,用户名应具有足够的特权来访问该数据库。您可以尝试通过SQL数据库属性中的Server admin login访问此数据库。此外,您可以参考this sample code以使用Java连接来访问Azure SQL数据库。

当使用Microsoft JDBC驱动程序将SQL Server用于connect to an Azure SQL Database时。您应该注意这一点:

  • 将服务器名称添加到连接字符串中的userId上

在用于SQL Server的Microsoft JDBC驱动程序的4.0版本之前,连接到Azure SQL数据库时,需要附加连接字符串中UserId的服务器名称。例如,用户名@服务器名。从Microsoft JDBC驱动程序的版本4.0开始对于SQL Server,不再需要将@servername附加到连接字符串中的UserId。

  • 使用加密需要设置hostNameInCertificate

在用于SQL Server的Microsoft JDBC驱动程序的7.2版之前,连接到Azure SQL数据库时,应指定hostNameInCertificate如果您指定crypto = true(如果服务器名称在连接字符串为shortName.domainName时,设置* .domainName的hostNameInCertificate属性。)。该属性是从驱动程序的7.2版本开始是可选的。

© www.soinside.com 2019 - 2024. All rights reserved.