【发布时间】:2021-05-12 02:38:12
【问题描述】:
我用
- JTDS 版本:jtds-1.3.1
- MS SQL JDBC 版本:mssql-jdbc-8.4.0.jre8 甚至 mssql-jdbc-9.2.0.jre8
- Java 8 更新 251
为简单起见,代码如下:
Android studio can't connect to database in Azure sql server
我无法连接到 SQL Server 或 Azure SQL。
我想用这个语法连接:
val connectionString = "jdbc:jtds:sqlserver://192.168.xx.xx:1433;databaseName=myData;user=x1;password=p1;encrypt=true;trustServerCertificate=true;"
使用此 JTDS 连接字符串,我可以连接到本地主机上的 SQL Server DB,但使用 MS-JDBC,我无法连接。
val connectionString = "jdbc:sqlserver://192.168.xx.xx:1433;databaseName=myData;user=x1;password=p1;encrypt=true;trustServerCertificate=true;"
我收到以下错误:
com.microsoft.sqlserver.jdbc.SQLServerException:驱动程序无法 使用安全套接字建立与 SQL Server 的安全连接 层 (SSL) 加密。错误:“套接字已关闭”。客户端连接 ID: xxxxxxxxxxxxxxxxx
当我使用以下命令将 JTDS 版本连接到 SQL Azure 时,发生了一件有趣的事情:
jdbc:jtds:sqlserver://xxxxx.database.windows.net:1433;database=xxxxx;user=username;password=password;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;
我无法连接到 SQL Azure 并出现以下错误
java.sql.SQLException:原因:由于客户端 TLS 版本导致登录失败 低于服务器允许的最小 TLS 版本
我已经试过了:
- SSLProtocol=TLSv1.2(TLS、TLSv1.0、TLSv1.1)=> 无效
- ssl=要求
是 JTDS 的错误,JDBC 的错误,还是我的连接字符串无效?我可以使用我的 dotnet 应用程序 (C#) 连接到 SQL Azure。
【问题讨论】:
-
docs.microsoft.com/en-us/azure/azure-sql/managed-instance/… 可以尝试在 azure 上更改 TLS 版本吗?
-
已经在 SQL Azure 上使用 TLS 1.2 版本。另一个实例使用 TLS 1.0,但 NONE WORKS
-
我可以使用相同的连接字符串连接到 sql azure,但不要单击最低 TLS 版本。如果您已经更改了最低 TLS 版本(1.0、1.1 或 1.2)并且连接将失败。希望这对某人有所帮助。
-
@ChandraArifin 不清楚您的意思,您的意思是您可以使用 jTDS 连接到 SQL Azure 吗?需要做哪些改变?谢谢。
-
是的,我可以使用 jTDS 连接到 SQL Azure。没有什么变化。只需确保第一次创建 SQL Azure 时,不要选择 TLS 版本,顺其自然。如果您已经选择了 TLS 之一,那么您将无法连接到 jTDS,因为它已经被加密了。
标签: java ssl jdbc mssql-jdbc jtds