t8y2/dbx · error · java.sql.SQLException
<dynamic SQLException message>\n\nDBX SQL Server legacy TLS
Error message
<dynamic SQLException message>\n\nDBX SQL Server legacy TLS diagnostics: java=${java.version}, javaVendor=${java.vendor}, jdbc=${driverVersion}, sslProtocol=TLSv1, tlsV1Disabled=${...}, tlsRsaDisabled=${...}, rsaPkcs1Sha1HandshakeDisabled=${...}, 3desDisabled=${...}, rc4Disabled=${...} What it means
Error "<dynamic SQLException message>\n\nDBX SQL Server legacy TLS diagnostics: java=${java.version}, javaVendor=${java.vendor}, jdbc=${driverVersion}, sslProtocol=TLSv1, tlsV1Disabled=${...}, tlsRsaDisabled=${...}, rsaPkcs1Sha1HandshakeDisabled=${...}, 3desDisabled=${...}, rc4Disabled=${...}" thrown in t8y2/dbx.
Source
Thrown at agents/drivers/sqlserver-legacy/src/main/java/com/dbx/agent/sqlserverlegacy/SqlServerLegacyAgent.java:102
Connection connection = super.openConnection(params);
sqlServer2000Mode = false;
logConnectionEvent("mssql-jdbc connected", params, null);
return connection;
} catch (SQLException error) {
logConnectionEvent("mssql-jdbc failed", params, error);
if (isSqlServer2000Unsupported(error)) {
logConnectionEvent("switching to jTDS 1.3.1 fallback", params, null);
try {
super.loadDriver(jtdsDriverParams());
sqlServer2000Mode = true;
Connection connection = super.openConnection(params);
logConnectionEvent("jTDS 1.3.1 connected", params, null);
return connection;
} catch (SQLException fallbackError) {
sqlServer2000Mode = false;
logConnectionEvent("jTDS 1.3.1 failed", params, fallbackError);
fallbackError.addSuppressed(error);
throw withLegacyTlsDiagnostics(fallbackError, "jTDS 1.3.1");
} catch (Exception fallbackError) {
sqlServer2000Mode = false;
logConnectionEvent("jTDS 1.3.1 failed", params, fallbackError);
fallbackError.addSuppressed(error);
throw fallbackError;
}
}
throw withLegacyTlsDiagnostics(error);
}
}
private static ConnectParams jtdsDriverParams() {
ConnectParams params = new ConnectParams();
params.setJdbc_driver_class(JTDS_DRIVER_CLASS);
params.setJdbc_driver_paths(Collections.emptyList());
return params;
}
View on GitHub (pinned to c0390bff16)
Solutions
- Match the TLS stack to the legacy server: enable TLSv1/legacy ciphers on the JVM (java.security.config tweaks re-enabling TLSv1, 3DES/RC4 as appropriate) or use a JDK that still permits them
- Prefer upgrading the SQL Server instance / enabling TLSv1.2 (patched SQL Server 2008+ supports it)
- Set sslProtocol=TLSv1 (or a legacyTLS setting) in the JDBC connection parameters if the mssql-jdbc path is required
- Let the driver fall back: the agent already retries via jTDS 1.3.1 for SQL Server 2000 — verify the jTDS fallback path is reachable and its params correct
- Consult the appended diagnostics: java.version, jdbc driver version, and which legacy algorithms are disabled indicate what to re-enable on this JVM
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at agents/drivers/sqlserver-legacy/src/main/java/com/dbx/agent/sqlserverlegacy/SqlServerLegacyAgent.java:102 when the library encounters an invalid state.
Common situations: See trigger scenarios.
Understand the failure class
- SSL/TLS and certificate errors — how TLS handshakes and certificate validation fail.
AI-assisted analysis of t8y2/dbx@c0390bff16 (2026-09-05).
Data as JSON: /api/errors/0f19e86e90ea5cff.
Report an issue: GitHub.