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

  1. 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
  2. Prefer upgrading the SQL Server instance / enabling TLSv1.2 (patched SQL Server 2008+ supports it)
  3. Set sslProtocol=TLSv1 (or a legacyTLS setting) in the JDBC connection parameters if the mssql-jdbc path is required
  4. 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
  5. 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


AI-assisted analysis of t8y2/dbx@c0390bff16 (2026-09-05). Data as JSON: /api/errors/0f19e86e90ea5cff. Report an issue: GitHub.