Trouble creating database connection w/ Ignition v7.3.9

Hoping someone can help. I’ve been trying to restore my client’s Ignition instance for the last couple days. It is version 7.3.9 and is running on Windows Server 2016. The database is MS SQL Express. I have worked through and verified the typical items are not a problem (TCP/IP enabled, SQL Server Browser process running, and mixed mode authentication enabled using SQL authentication). I have also opened port 1433 in Windows Firewall. I have been reading through various support articles that mention the java drivers may need to be updated. I’m not a java guy, but I’ve tried replacing the default SQL Server JDBC drivers with the following versions with no luck (4, 7, and 9). I’m hoping since this is the earlier version of Ignition, someone on here will have come across this before. As far as the connection config, it’s basic - localhost string with the sa account - so I don’t think there are any issues there.

So, here’s the error I get when I try to connect: Faulted - Error: Cannot load JDBC driver class ‘com.microsoft.sqlserver.jdbc.SQLServerDriver’

Here are the details for the error:

org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class ‘com.microsoft.sqlserver.jdbc.SQLServerDriver’
org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1136)
org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
com.inductiveautomation.ignition.gateway.datasource.DatasourceImpl.getConnectionInternal(DatasourceImpl.java:189)
com.inductiveautomation.ignition.gateway.datasource.DatasourceImpl.runTest(DatasourceImpl.java:145)
com.inductiveautomation.ignition.gateway.datasource.DatasourceManagerImpl$FaultedDatasourceRetryer.run(DatasourceManagerImpl.java:1117)
java.lang.Thread.run(Unknown Source)
java.lang.UnsupportedClassVersionError: com/microsoft/sqlserver/jdbc/SQLServerDriver : Unsupported major.minor version 55.0
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClassCond(Unknown Source)
java.lang.ClassLoader.defineClass(Unknown Source)
java.security.SecureClassLoader.defineClass(Unknown Source)
java.net.URLClassLoader.defineClass(Unknown Source)
java.net.URLClassLoader.access$000(Unknown Source)
java.net.URLClassLoader$1.run(Unknown Source)
java.security.AccessController.doPrivileged(Native Method)
java.net.URLClassLoader.findClass(Unknown Source)
java.lang.ClassLoader.loadClass(Unknown Source)
java.lang.ClassLoader.loadClass(Unknown Source)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Unknown Source)
org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1130)
org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
com.inductiveautomation.ignition.gateway.datasource.DatasourceImpl.getConnectionInternal(DatasourceImpl.java:189)
com.inductiveautomation.ignition.gateway.datasource.DatasourceImpl.runTest(DatasourceImpl.java:145)
com.inductiveautomation.ignition.gateway.datasource.DatasourceManagerImpl$FaultedDatasourceRetryer.run(DatasourceManagerImpl.java:1117)
java.lang.Thread.run(Unknown Source)

This error means whatever version of the JDBC driver you’re currently trying to use was compiled for Java 11+ and if you’re running something as old as 7.3.9 you must be on 6, 7, or 8.

You’ll have to find an older JDBC driver than whatever version this one is.

I thought these older versions of Ignition already came with JDBC drivers pre-installed… was that not the case? Ignition 7.3 downloads are still available in the archives section of the download page.

Thanks Kevin. Yes, the virtual server that was set up is running Java v6. The default JDBC driver that comes with the 7.3.9 install was v4.0, which I think was causing the problem originally. I have read multiple support articles that say v4.0 is no longer supported/works with SQL Server. Any thoughts on what JDBC driver would work with Java v6? If I’m updating the JDBC driver, do I just need to copy the new .jar file to the location Ignition pulls the driver from? Like I said, I know nothing about working with Java, so forgive my ignorance on the subject. I don’t know if there are other files I’d need to replace as well.

You’re running unsupported software all around, you probably need to stick with 4.0. It will work with older versions of SQL Server but not some newer ones.

Check the compatibility matrices here: https://docs.microsoft.com/en-us/sql/connect/jdbc/microsoft-jdbc-driver-for-sql-server-support-matrix?view=sql-server-ver15

Would you recommend updating the version of Java on the server, or would that not make a difference if I’m still running Ignition v7.3.9? I assume that’s a download I could grab somewhere and get done fairly easy. The system I’m trying to rebuild is the only one on this server, so there’s nothing else that is dependent on v6.

The requirements for 7.3.9 are listed as Java 6 or 7. Java 8 might work but you’d just have to try it and see.

Anything newer than Java 8 definitely will not work.

Thanks for the help. Unfortunately I’m getting that error regardless of what driver I use. I may just need to uninstall and start over. Appreciate the effort.

I would be shocked if you can get any combination of java versions and JDBC drivers that will work with both Ignition v7.3 and SQL Server 2016. If you cannot upgrade Ignition, you’ll almost certainly have to install an old version of SQL Server Express. If you can find on that’ll run on Server 2016. ):

Thanks for the tip - that’s good to know. Looks like the best plan is to convince my client to pay for the upgrade to v8.x

Do test this first. 7.3 to 8.1 is a big leap and there were a lot of changes in between.

1 Like

I may try phone support on Monday, but I’ve already spent several days just trying to get this one thing working. The only thing we rely on is the SQL Bridge module anyway. We use it to retrieve data from remote PLCs via cell modems, and then use the SQL Bridge module to deposit that data into a centralized SQL database. I’m hoping just that piece hasn’t changed so much.

What version of SQL Server were you using? Phil has the impression that you’re using 2016 but that was the Windows Server version I thought.

You may be having that same JDBC error because there are still newer JDBC jars sitting in the JDBC folder on the filesystem.

I would expect restoring your backup into a clean install of 7.3.9 to at least produce a different error.

1 Like

Got it. Any yes, I didn’t remove the other versions of the jar driver files - just assumed Ignition would use the one I specified in the Drivers setup. I’ll definitely give it a shot. Thanks.

After you remove the other JARs make sure to restart the Ignition gateway.

That got me back to an earlier error.

Error:

Cannot create PoolableConnectionFactory (The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: “java.lang.RuntimeException: Could not generate DH keypair”.)

What changed about this system compared to what I assume worked in the past? Newer DB or something?

This article suggests a sufficiently updated version of Java 7 or 8 would solve the problem: https://confluence.atlassian.com/bitbucketserverkb/migration-to-sql-server-fails-with-the-driver-could-not-establish-a-secure-connection-to-sql-server-by-using-secure-sockets-layer-ssl-encryption-943980524.html

Another Stack Overflow post I saw searching for that error suggested something was fixed in the 4.2 version of the JDBC Driver, which would work with Java 7 but not Java 6.