SymmetricDS SQL Server error while reading the database metadata

281 Views Asked by At

SQL Server version is 2016 (v13.0.4259.0), platform NT64x.

I am trying to test connection to SQL Server by doing command from SymmetricDS bin like this:

dbsql --engine store-001

store-001 properties contains

engine.name=store-001
db.driver=net.sourceforge.jtds.jdbc.Driver
db.url=jdbc:jtds:sqlserver://192.168.16.123:1433/crawlers_sm;useCursors=true;bufferMaxMemory=10240;lobBuffer=5242880
db.user=user
db.password=password
registration.url=http://localhost:31415/sync/corp-000
group.id=store
external.id=001
job.routing.period.time.ms=5000
job.push.period.time.ms=10000
job.pull.period.time.ms=10000

However it returns Exception:

An exception occurred.  Please see the following for details:
-------------------------------------------------------------------------------
java.lang.AbstractMethodError
        at net.sourceforge.jtds.jdbc.JtdsConnection.isValid(JtdsConnection.java:2833)
        at org.apache.commons.dbcp2.DelegatingConnection.isValid(DelegatingConnection.java:590)
        at org.apache.commons.dbcp2.PoolableConnection.validate(PoolableConnection.java:334)
        at org.apache.commons.dbcp2.PoolableConnectionFactory.validateConnection(PoolableConnectionFactory.java:653)
        at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:109)
        at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:649)
        at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:531)
        at org.jumpmind.db.util.ResettableBasicDataSource.createDataSource(ResettableBasicDataSource.java:55)
        at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:731)
        at org.jumpmind.db.platform.JdbcDatabasePlatformFactory.determineDatabaseNameVersionSubprotocol(JdbcDatabasePlatformFactory.java:271)
 [wrapped] org.jumpmind.db.sql.SqlException: Error while reading the database metadata: null
        at org.jumpmind.db.platform.JdbcDatabasePlatformFactory.determineDatabaseNameVersionSubprotocol(JdbcDatabasePlatformFactory.java:287)
        at org.jumpmind.db.platform.JdbcDatabasePlatformFactory.create(JdbcDatabasePlatformFactory.java:238)
        at org.jumpmind.symmetric.ClientSymmetricEngine.createDatabasePlatform(ClientSymmetricEngine.java:367)
        at org.jumpmind.symmetric.ClientSymmetricEngine.createDatabasePlatform(ClientSymmetricEngine.java:326)
        at org.jumpmind.symmetric.AbstractCommandLauncher.getDatabasePlatform(AbstractCommandLauncher.java:287)
        at org.jumpmind.symmetric.DbSqlCommand.executeWithOptions(DbSqlCommand.java:73)
        at org.jumpmind.symmetric.AbstractCommandLauncher.execute(AbstractCommandLauncher.java:153)
        at org.jumpmind.symmetric.DbSqlCommand.main(DbSqlCommand.java:42)

I tried to connect on Oracle database same way and it worked. Then I try to google exception but did not find anything helpful. Checked symmetricds compatibility and seems it is compatible.

2

There are 2 best solutions below

0
Marine Fighter On

Thanks to the comments I figure out. In symmetricds properties file had to change this lines.

db.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
db.url=jdbc:sqlserver://192.168.16.123:1433;databaseName=crawlers_sm;encrypt=true;trustServerCertificate=true;
0
wharfratcat On

If you do want to use the JTDS driver, you will need to specify db.validation.query in your engine file. For Microsoft SQL Server, it is Select 1 like as follows:

db.validation.query=Select 1