In a recent upgrade, I had to get Maximo 7.6.1.2 to work with SQL Server 2019 (15.0.4198.2 – Jan/2022).
Initially, I thought I needed to replace the JDBC driver that comes with Maximo with the latest JDBC driver version (10.2). However, it doesn’t solve the issue.
After searching the Web, I came across an article which suggests the problem is due to the new SQL Server version requires SSL protocol TLS 1.2 .
Thus, I managed to fix the issue by adding this parameter to the end of the JDBC connections string: sslProtocol=TLSv1.2;
The full connection string will look as follows:
mxe.db.url=jdbc:sqlserver://;serverName=[SERVERNAME];databaseName=[DBNAME];portNumber=1433;integratedSecurity=false;sendStringParametersAsUnicode=false;sslProtocol=TLSv1.2;
The other method that seems to work too is adding this parameter: -Dcom.ibm.jsse2.overrideDefaultTLS=true to the JVM argument of the Application server, or execution command of any tools running Java such as ScriptBuilder.bat, UpdateDB.bat or IntegrityUI.bat
For example, for the integrityui.bat tool, I edit the file and update it as below:
@..javajrebinjava -Dcom.ibm.jsse2.overrideDefaultTLS=true -Dswing.handleTopLevelPaint=false -classpath %MAXIMO_CLASSPATH% psdi.configure.UpgradeUI -i
Update Aug/2023: I recently had the following database connection error when running UpdateDB.bat with SQL Server 14 SP1:
com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "com.ibm.jsse2.util.j: PKIX path building failed
Without digging into which version of TLS is being used, I got it running by adding the following two parameters to the connection string in maximo.properties file:
encrypt=true;trustServerCertificate=true