Upgrade to TIBCO Spotfire server 10.3.0 or 10.3.1 is failing with "no sqljdbc_auth in java.library.path" error when using integrated authentication with Spotfire Database

Upgrade to TIBCO Spotfire server 10.3.0 or 10.3.1 is failing with "no sqljdbc_auth in java.library.path" error when using integrated authentication with Spotfire Database

book

Article ID: KB0077688

calendar_today

Updated On:

Products Versions
Spotfire Server 10.3.0, 10.3.1

Description

If the the TIBCO Spotfire Server application database is using integrated authentication (see Setting up the Spotfire database (SQL Server with Integrated Windows authentication)) then the upgrade to 10.3.0 or 10.3.1 fails with the error message "Unable to connect to the database: This driver is not configured for integrated authentication". See the full stack trace below from details.log:

ERROR 2019-06-25T15:29:28,027 upgrade.swing.DatabaseConnectionStepView: Internal error during database connection.
com.spotfire.server.tools.DatabaseConnectionException: Unable to connect to the database: This driver is not configured for integrated authentication. ClientConnectionId:77f1378c-9a86-431e-a9dd-3c447137e282
	at com.spotfire.server.tools.ToolsUtilities.createDatabaseConnection(ToolsUtilities.java:196) ~[?:?]
	at com.spotfire.server.tools.upgrade.steps.DatabaseConnectionStep.prepareUpdate(DatabaseConnectionStep.java:62) ~[?:?]
	at com.spotfire.server.tools.upgrade.swing.DatabaseConnectionStepView.updateModel(DatabaseConnectionStepView.java:223) [?:?]
	at com.spotfire.server.tools.wizards.swing.AbstractInstallerWindow$NextActionListener.actionPerformed(AbstractInstallerWindow.java:527) [?:?]
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) [?:1.8.0_212]
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) [?:1.8.0_212]
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) [?:1.8.0_212]
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) [?:1.8.0_212]
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) [?:1.8.0_212]
	at java.awt.Component.processMouseEvent(Component.java:6539) [?:1.8.0_212]
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) [?:1.8.0_212]
	at java.awt.Component.processEvent(Component.java:6304) [?:1.8.0_212]
	at java.awt.Container.processEvent(Container.java:2239) [?:1.8.0_212]
	at java.awt.Component.dispatchEventImpl(Component.java:4889) [?:1.8.0_212]
	at java.awt.Container.dispatchEventImpl(Container.java:2297) [?:1.8.0_212]
	at java.awt.Component.dispatchEvent(Component.java:4711) [?:1.8.0_212]
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904) [?:1.8.0_212]
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535) [?:1.8.0_212]
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476) [?:1.8.0_212]
	at java.awt.Container.dispatchEventImpl(Container.java:2283) [?:1.8.0_212]
	at java.awt.Window.dispatchEventImpl(Window.java:2746) [?:1.8.0_212]
	at java.awt.Component.dispatchEvent(Component.java:4711) [?:1.8.0_212]
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760) [?:1.8.0_212]
	at java.awt.EventQueue.access$500(EventQueue.java:97) [?:1.8.0_212]
	at java.awt.EventQueue$3.run(EventQueue.java:709) [?:1.8.0_212]
	at java.awt.EventQueue$3.run(EventQueue.java:703) [?:1.8.0_212]
	at java.security.AccessController.doPrivileged(Native Method) [?:1.8.0_212]
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) [?:1.8.0_212]
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84) [?:1.8.0_212]
	at java.awt.EventQueue$4.run(EventQueue.java:733) [?:1.8.0_212]
	at java.awt.EventQueue$4.run(EventQueue.java:731) [?:1.8.0_212]
	at java.security.AccessController.doPrivileged(Native Method) [?:1.8.0_212]
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) [?:1.8.0_212]
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:730) [?:1.8.0_212]
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) [?:1.8.0_212]
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) [?:1.8.0_212]
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) [?:1.8.0_212]
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) [?:1.8.0_212]
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) [?:1.8.0_212]
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) [?:1.8.0_212]
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication. ClientConnectionId:77f1378c-9a86-431e-a9dd-3c447137e282
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2826) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.AuthenticationJNI.<init>(AuthenticationJNI.java:73) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3550) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:81) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3541) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7240) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2869) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2395) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2042) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1889) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1120) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:700) ~[sqljdbc4.jar:?]
	at com.spotfire.server.util.sql.DriverWrapper.connect(DriverWrapper.java:69) ~[?:?]
	at com.spotfire.server.util.sql.PoolingDataSource.createStandardConnection(PoolingDataSource.java:1089) ~[?:?]
	at com.spotfire.server.util.sql.PoolingDataSource.createStandardConnection(PoolingDataSource.java:1075) ~[?:?]
	at com.spotfire.server.util.sql.PoolingDataSource.createConnection(PoolingDataSource.java:1071) ~[?:?]
	at com.spotfire.server.util.sql.PoolingDataSource.createAndInitConnection(PoolingDataSource.java:869) ~[?:?]
	at com.spotfire.server.util.sql.PoolingDataSource.getConnection(PoolingDataSource.java:722) ~[?:?]
	at com.spotfire.server.tools.ToolsUtilities.createDatabaseConnection(ToolsUtilities.java:192) ~[?:?]
	... 39 more
Caused by: java.lang.UnsatisfiedLinkError: no sqljdbc_auth in java.library.path
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867) ~[?:1.8.0_212]
	at java.lang.Runtime.loadLibrary0(Runtime.java:870) ~[?:1.8.0_212]
	at java.lang.System.loadLibrary(System.java:1122) ~[?:1.8.0_212]
	at com.microsoft.sqlserver.jdbc.AuthenticationJNI.<clinit>(AuthenticationJNI.java:52) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3549) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:81) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3541) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7240) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2869) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2395) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2042) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1889) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1120) ~[sqljdbc4.jar:?]
	at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:700) ~[sqljdbc4.jar:?]
	at com.spotfire.server.util.sql.DriverWrapper.connect(DriverWrapper.java:69) ~[?:?]
	at com.spotfire.server.util.sql.PoolingDataSource.createStandardConnection(PoolingDataSource.java:1089) ~[?:?]
	at com.spotfire.server.util.sql.PoolingDataSource.createStandardConnection(PoolingDataSource.java:1075) ~[?:?]
	at com.spotfire.server.util.sql.PoolingDataSource.createConnection(PoolingDataSource.java:1071) ~[?:?]
	at com.spotfire.server.util.sql.PoolingDataSource.createAndInitConnection(PoolingDataSource.java:869) ~[?:?]
	at com.spotfire.server.util.sql.PoolingDataSource.getConnection(PoolingDataSource.java:722) ~[?:?]
	at com.spotfire.server.tools.ToolsUtilities.createDatabaseConnection(ToolsUtillities.java:192) ~[?:?]
	... 39 more

 

Resolution

This is a known defect which has been resolved in TIBCO Spotfire Server 10.3.2 and higher.

To resolve, upgrade to version 10.3.2 or higher. Note: To workaround this issue for TIBCO Spotfire Server 10.3.0 and 10.3.1, copy the sqljdbc_auth.dll file from the previous installation folder (<server installation-folder>/jdk/jre/bin) or (<server installation-folder>/ tomcat/bin) to the newly installed TIBCO Spotfire Server version (<server installation-folder>/jdk/jre/bin) folder and then follow the upgrade procedure.

Issue/Introduction

This article will help you resolve the issue when you see "no sqljdbc_auth in java.library.path" error in details.log

Additional Information

Doc: Setting up the Spotfire database (SQL Server with Integrated Windows authentication)