SUBERROR Failed Status(database access failed)

book

Article ID: 195019

calendar_today

Updated On:

Products

CA Workload Automation DE - Business Agents (dSeries) CA Workload Automation DE DSERIES- SERVER CA Workload Automation DE - System Agent (dSeries) CA Workload Automation DE - Scheduler (dSeries)

Issue/Introduction

We installed the ca agent and installed msql agent on Production instance, both agent and mssql is running without any problems. When we trying to retrieve the MSSQL server info i am getting below error.

07/11/2020 11:29:30.265+1000 5 SqlPlugin.Thread-6.CybWOBSpoolOutput.emitSpoolFileLine[:13] - Getting sql exception ... I/O Error: DB server closed connection.
07/11/2020 11:29:30.265+1000 5 SqlPlugin.Thread-6.CybWOBSpoolOutput.emitSpoolFileLine[:13] - Retry 1, monitoring is false
07/11/2020 11:29:30.265+1000 1 SqlPlugin.Thread-6.ThreadedRequestHandler.run[:191] - java.sql.SQLException: I/O Error: DB server closed connection.
                                                                                      at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2311)
                                                                                      at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:603)
                                                                                      at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:352)
                                                                                      at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50)
                                                                                      at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:185)
                                                                                      at java.sql.DriverManager.getConnection(DriverManager.java:664)
                                                                                      at java.sql.DriverManager.getConnection(DriverManager.java:247)
                                                                                      at cybermation.plugins.sql.datasource.Registry.begin(Registry.java:271)
                                                                                      at cybermation.plugins.sql.datasource.AbstractDBAccessHandler.execute(AbstractDBAccessHandler.java:41)
                                                                                      at cybermation.plugins.sql.requesthandler.ThreadedRequestHandler.execute(ThreadedRequestHandler.java:101)
                                                                                      at cybermation.plugins.sql.requesthandler.ThreadedRequestHandler.run(ThreadedRequestHandler.java:127)
                                                                                      at java.lang.Thread.run(Thread.java:748)
                                                                                     Caused by: java.io.IOException: DB server closed connection.
                                                                                      at net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.java:853)
                                                                                      at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:732)
                                                                                      at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:466)
                                                                                      at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:103)
                                                                                      at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2206)
                                                                                      at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:603)
                                                                                      at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:352)
                                                                                      at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50)
                                                                                      at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:185)
                                                                                      at java.sql.DriverManager.getConnection(DriverManager.java:664)
                                                                                      at java.sql.DriverManager.getConnection(DriverManager.java:247)
                                                                                      at cybermation.plugins.sql.datasource.Registry.begin(Registry.java:271)
                                                                                      at cybermation.plugins.sql.datasource.AbstractDBAccessHandler.execute(AbstractDBAccessHandler.java:41)
                                                                                      at cybermation.plugins.sql.requesthandler.ThreadedRequestHandler.execute(ThreadedRequestHandler.java:101)
                                                                                      at cybermation.plugins.sql.requesthandler.ThreadedRequestHandler.run(ThreadedRequestHandler.java:127)
                                                                                      at java.lang.Thread.run(Thread.java:748)

Cause

The SQL Server is using SSL/Forced encryption but the Agent for Microsoft SQL (plugin) is configured to use jTDS which is not compatible with SSL/Forced encryption enabled SQL Server.

The SQL Server log shows error like below;
"Encryption is required to connect to this server but the client library does not support encryption; the connection has been closed. Please upgrade your client library. [CLIENT: xx.xxx.xxx.xx]"

Environment

Release : 11.4

Component : CA Workload Automation Agent for MS SQL Server

Resolution


Should use JDBC for SQL connection instead of jTDS.

Steps:

1. Download latest SQL JDBC driver to replace the jTDS driver in <agent_installdir>\jars\ext

For example, replace jtds-1.3.1.jar with mssql-jdbc-8.2.2.jre8.jar file (Do NOT rename the jtds-1.3.1.jar file)

2. Update the MSSQL plugin system properties file (<agent_installdir>\config\sqlagent.properties) with SQL JDBC driver classname;

#db.classname=net.sourceforge.jtds.jdbc.Driver
db.classname=com.microsoft.sqlserver.jdbc.SQLServerDriver

3. Update the DB URL in target properties file like below (note the additional properties in the URL "encrypt=true;trustServerCertificate=true")

#db.url=jdbc:jtds:sqlserver://localhost:1433/msdb
db.url=jdbc:sqlserver://localhost:1433;DatabaseName=msdb;encrypt=true;trustServerCertificate=true

4. Restart the agent for the change to take effect.