J'ai des problèmes de connexion aux bases de données SQL. Chaque fois que j'essaie de me connecter à un serveur SQL, l'erreur suivante apparaît.
Caused by: org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect
at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.Java:132)
at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator$1$1.convert(BasicConnectionCreator.Java:118)
at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.Java:140)
at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.Java:58)
at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.Java:75)
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.Java:106)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.Java:111)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.Java:234)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.Java:206)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.Java:260)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.Java:94)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.Java:111)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.Java:234)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.Java:206)
at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.Java:1887)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.Java:1845)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.Java:857)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.Java:850)
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.Java:425)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.Java:849)
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.Java:75)
... 143 more
Caused by: com.Microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "SQL Server did not return a response. The connection has been closed. ClientConnectionId:.....".
at com.Microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.Java:1667)
at com.Microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.Java:1668)
at com.Microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.Java:1323)
at com.Microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.Java:991)
at com.Microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.Java:827)
at com.Microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.Java:1012)
at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.Java:55)
... 160 more
Caused by: Java.io.IOException: SQL Server did not return a response. The connection has been closed. ClientConnectionId:.....
at com.Microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.ensureSSLPayload(IOBuffer.Java:651)
at com.Microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.readInternal(IOBuffer.Java:708)
at com.Microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.read(IOBuffer.Java:700)
at com.Microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.readInternal(IOBuffer.Java:895)
at com.Microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.read(IOBuffer.Java:883)
at Sun.security.ssl.InputRecord.readFully(InputRecord.Java:465)
at Sun.security.ssl.InputRecord.read(InputRecord.Java:503)
at Sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.Java:973)
at Sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.Java:1375)
at Sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.Java:1403)
at Sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.Java:1387)
at com.Microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.Java:1618)
... 165 more
Ceci utilise com.Microsoft.sqlserver.jdbc.SQLServerDriver
À chaque fois que j'utilise le pilote JtDS (suggéré par exemple. cet article ), je ne parviens toujours pas à me connecter au serveur SQL et j'obtiens le message d'erreur suivant.
Caused by: org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect
at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.Java:132)
at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator$1$1.convert(BasicConnectionCreator.Java:118)
at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.Java:140)
at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.Java:58)
at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.Java:75)
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.Java:106)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.Java:111)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.Java:234)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.Java:206)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.Java:260)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.Java:94)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.Java:111)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.Java:234)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.Java:206)
at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.Java:1887)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.Java:1845)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.Java:857)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.Java:850)
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.Java:425)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.Java:849)
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.Java:75)
... 143 more
Caused by: Java.sql.SQLException: I/O Error: DB server closed connection.
at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.Java:2481)
at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.Java:632)
at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.Java:371)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.Java:184)
at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.Java:55)
... 160 more
Caused by: Java.io.IOException: DB server closed connection.
at net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.Java:852)
at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.Java:731)
at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.Java:477)
at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.Java:114)
at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.Java:2368)
... 164 more
La chaîne de connexion que j'utilise: (en utilisant jtds)
jdbc:jtds:sqlserver://url.database.windows.net:[PORT];database=name;
OU lorsque vous n'utilisez pas jtds ..
jdbc:sqlserver://url.database.windows.net:[PORT];database=name;
J'ai également un serveur capable d'exécuter et de se connecter à la base de données à l'aide de ces configurations. Je n'arrête pas de recevoir ces erreurs en essayant de me connecter à la base de données localement.
J'utilise macOS Sierra version 10.21
version jtds:
<dependency>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
<version>1.3.1</version>
</dependency>
version de sqlserver:
<dependency>
<groupId>com.Microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
EDIT:
Je peux me connecter à la base de données en utilisant la même configuration ET le même ordinateur portable sur un réseau différent. C’est seulement sur mon réseau à la maison que j’obtiens cette erreur
Je soupçonne que lorsque votre ordinateur portable est sur un "réseau différent", il se trouve également à l'intérieur du pare-feu et protège également les serveurs de base de données auxquels vous vous connectez. Par conséquent, il n'y a aucun problème pour établir les connexions à la base de données pour ce cas.
Je présume que votre "réseau à domicile" se situe en dehors du pare-feu protégeant les serveurs de base de données auxquels vous essayez de vous connecter. Par conséquent, vos tentatives de connexion à la base de données dans ce cas sont ignorées en raison de la protection par le pare-feu.
Si ces hypothèses sont correctes, vous devrez contacter l'administrateur du "réseau différent" pour obtenir un accès via le pare-feu à partir de votre réseau domestique.
J'espère que ça aide.
Votre problème est similaire à https://youtrack.jetbrains.com/issue/IDEA-163324
La solution est:
scutil --getHostName
Sudo scutil --set HostName "<YOUR HOSTNAME HERE>"
Faites votre chaîne url
comme ci-dessous et ajoutez sqljdbc42.jar
dans votre projet
url = "jdbc:sqlserver://" +serverName + ":1433;DatabaseName=" + dbName +";
encrypt = true;
trustServerCertificate=true;