IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

erreur lors d'une connexion a une base sql server


Sujet :

JDBC Java

  1. #1
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut erreur lors d'une connexion a une base sql server
    Bonjour,

    J'ai créé une classe pour me connecter à une base SQL server 2005, effectuer une requete et afficher le résultat. Pour cela j'ai importer le sqljdbc.jar dans mon projet.

    Mais hélas j'obtiens une erreur. Si j'ai bien compris il ne se connecte pas au serveur. Sauriez-vous pourquoi?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    com.microsoft.sqlserver.jdbc.SQLServerException: Échec de la connexion à l'instance nommée . Erreur : java.net.SocketTimeoutException: Receive timed out.
    	at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
    	at com.microsoft.sqlserver.jdbc.SQLServerConnection.getInstancePort(Unknown Source)
    	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source)
    	at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source)
    	at java.sql.DriverManager.getConnection(Unknown Source)
    	at java.sql.DriverManager.getConnection(Unknown Source)
    	at test_jdbc.Test.<init>(Test.java:16)
    	at test_jdbc.Test.main(Test.java:43)
    Voici ma classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    package test_jdbc;
     
    import java.sql.*;
     
    public class Test {
     
    	public Test(){
     
    		try {
     
    			 // chargement du pilote JDBC
    			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
    			 // adresse de connexion
    			String url = "jdbc:sqlserver://LENOVO-3000J\\SQLEXPRESS;databaseName=PROMOCR;integratedSecurity=true";
    			 // connexion
    			Connection connexion = DriverManager.getConnection(url); 
    			 // création d'une instruction
    			Statement instruction = connexion.createStatement();
    			 // requete SQL qui permet de lister les clé primaires
    			String requete = "EXEC sp_pkeys @table_name='CR'";
    			 // execution de la requete
    			ResultSet executionRequete = instruction.executeQuery(requete);
    			while (executionRequete.next()) {
    				System.out.println(executionRequete);
    			}
    			connexion.close();
     
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    			// TODO: traitement erreur
    		}
    		  catch (SQLException sqle){
    			  sqle.printStackTrace();
    		    // TODO: traitement erreur
    		  }
     
    	}
     
     
     
     
    	public static void main(String[] args) {
    		Test test = new Test();
     
    	}
     
    }
    Merci d'avance.

  2. #2
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    Salut,

    en general si tu obtiens un timeout ca peut venir d une mauvaise ip de ta cible (enfin tu n aurais pas mise la bonne dans ton code) ou un mauvais port.

    Sinon as tu bien pensé au firewall traversé pour attaquer ton serveur ?
    "vaste programme"

  3. #3
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Salut,

    ben j'ai précisé le serveur sur lequel est ma base dans SQL SERVER mais pas de numéro de port:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    //LENOVO-3000J\\SQLEXPRESS
    sinon pour
    Sinon as tu bien pensé au firewall traversé pour attaquer ton serveur ?
    je ne vois pas bien ce que tu veux dire en fait.

    Encore merci de ton aide.

  4. #4
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    ben le but d un firewall est d empecher les connexion sur la plus part de sports d un pc sauf ceuc laissé ouvert comme le 80 souvent (internet).

    Si tu tente de te connecter sur un port bloqué par le firewall du serveur ca pourrait expliquer le timeout, ta requete est envoyé au serveur mais le firewall la bloque et du coup tu n as aucune reponse
    "vaste programme"

  5. #5
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Merci beaucoup.

    J'ai bien compris mais le problème c'est que je ne sais pas quel port utilise le serveur.
    Quand je me connecte depuis SQL server à ce serveur cela fonctionne.

    edit : ci-joint un screen des propriétés de ma connexion sous sqlserver
    Images attachées Images attachées  

  6. #6
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    j'ai désactivé le pare-feu. Mais apparemment c'est pas cela qui génait car j'ai toujours mon time out.

  7. #7
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    si je remplace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String url = "jdbc:sqlserver://LENOVO-3000J\\SQLEXPRESS;databaseName=PROMOCR;integratedSecurity=true";
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String url = "jdbc:sqlserver://localhost";
    j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    com.microsoft.sqlserver.jdbc.SQLServerException: Échec de la connexion TCP/IP à l'hôte . java.net.ConnectException: Connection refused: connect
    	at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
    	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(Unknown Source)
    	at com.microsoft.sqlserver.jdbc.SQLServerConnection.loginWithoutFailover(Unknown Source)
    	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(Unknown Source)
    	at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(Unknown Source)
    	at java.sql.DriverManager.getConnection(Unknown Source)
    	at java.sql.DriverManager.getConnection(Unknown Source)
    	at test_jdbc.Test.<init>(Test.java:20)
    	at test_jdbc.Test.main(Test.java:50)
    Bref j'arrive même pas à me connecter à une base de donnée locale par défaut. Une petite idée?

    Merci d'avance.

  8. #8
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Bonjour à tous,

    Hélas mon problème n'est toujours pas résolu.
    J'ai regardé dans le configuration manager et tout est activé.
    J'ai un jre 1.6.0, je sais pas si sa peut venir de là.
    Ma version de sqljdbc c'est 1.1
    Pour me connecter à ma base dans sqlserver j'utilise une authentification windows.
    j'utilise l'url suivante dans mon code
    String url = "jdbc:sqlserver://localhost";
    mais toujours la même erreur même si je désactive mon pare-feu durant l'execution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    com.microsoft.sqlserver.jdbc.SQLServerException: Échec de la connexion TCP/IP à l'hôte . java.net.ConnectException: Connection refused: connect
    Vous ne voyez toujours pas d'où cela pourrait provenir?

  9. #9
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    SAlut,

    pour ton probleme en local je pense que le login mot de passe de connexion ne sont pasd bons et que tu es rejetté pour ca.

    Verifie bien ton URL, j en vois meme pas en fait dans ta String, mais la je pourrais pas t aider, me suis jamais connecter en Java sur du M$.
    "vaste programme"

  10. #10
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Salut,

    Merci beaucoup pour ta réponse.
    Comme j'utilise l'authentification windows, je n'ai ni nom d'utilisateur ni mot de passe en fait.

    Par contre j'ai lu ceci dans une doc :
    Pour utiliser l'authentification intégrée, copiez le fichier sqljdbc_auth.dll dans un répertoire sur le chemin du système Windows de l'ordinateur sur lequel le pilote JDBC est installé.
    J'ai donc bien ce fichier sqljdbc_auth.dll mais je ne comprends pas l'endroit ou ils disent de le copier :
    dans un répertoire sur le chemin du système Windows de l'ordinateur sur lequel le pilote JDBC est installé
    Ce fichier est dans le repertoire par défaut du driver :
    C:\Microsoft SQL Server 2005 JDBC Driver\sqljdbc_1.1\fr\auth\x86
    Est-ce que je peux faire cela à partir d'Eclipse?

    Merci d'avance.

  11. #11
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Re,

    j'ai activé le port 1433 dans les propriétés du manager de sql server 2005. Maintenant j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MESSAGE: Ce pilote n'est pas configuré pour l'authentification intégrée.
     
    1 mars 2007 12:43:13 com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit>
    ATTENTION: Failed to load the sqljdbc_auth.dll
    Quelqu'un voit d'où cela pourrait provenir?

  12. #12
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Rebonjour,

    j'ai une nouvelle erreur mais là sa provient peut-être de sql server car j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    L'utilisateur n'est pas associé à une connexion SQL Server approuvée

  13. #13
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    Quel newbie je suis.
    J'avais pas configuré SQL server comme il faut. Tout fonctionne maintenant.

    Merci de votre aide en tout cas.

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    mais t'as configuré quoi pour que ça marche ? :p

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 11
    Points : 11
    Points
    11
    Par défaut [Solution] erreur lors d'une connexion a une base sql server
    Bonjour les hommes de Java,

    J'ai lu avec intérêt les messages sur la configuration de Microsoft SQL 2005 avec le pilote JBC, car j'ai fait grosso modo le même parcours du combattant que le vôtre... TimeOut... et Connection refused et le fameux message : « L'utilisateur n'est pas associé à une connexion SQL Server approuvée. » ???

    La solution était finalement liée au fichier sqljdbc_auth.dll qu'il fallait placer dans le répertoire C:\WINDOWS\system32

    Pour être plus complet, j'ajouterai la ligne de code Java suivante :
    connectionUrl = "jdbc:sqlserver://"nom du serveur";databaseName="nom de votre BD";integratedSecurity=true;";

    où "nom du serveur" pourra être trouvé dans le tableau des propriétés du serveur Microsoft SQL 2005, i.e. dans l'application Microsoft SQL Server Management Studio. Semblable pour le "nom de votre BD"

    Merci beaucoup les gars pour les indices car je commençais à « taponner en crisse » comme on dit chez nous!


  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 201
    Points : 55
    Points
    55
    Par défaut
    Bonjour à tous,

    j'ai exactement la même erreur.

    Est-ce que quelqu'un pourrait me détailler :

    Citation Envoyé par kifouillou Voir le message
    j'ai activé le port 1433 dans les propriétés du manager de sql server 2005.

  17. #17
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2012
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Décembre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    je travaille avec workbench de pentaho, et quand je le connecte à ma BD local qui est sous SQL server 2008, j'ai cette erreur là :
    "Ce pilote n'est pas configuré pour l'authentification intégrée".
    Erreur que kifouillou a rencontré, mais n'a pas developpé le moyen exact de la résoudre, merci de me répondre le plus vite possible, je suis vraiment bloqué.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.4] Erreur lors de l'appel d'une méthode dans une classe
    Par beegees dans le forum Langage
    Réponses: 8
    Dernier message: 25/01/2015, 13h20
  2. Réponses: 8
    Dernier message: 19/05/2010, 19h47
  3. Erreur lors de la connexion a une base access
    Par skunkies dans le forum Windows Forms
    Réponses: 2
    Dernier message: 31/10/2008, 17h17
  4. Réponses: 10
    Dernier message: 07/08/2008, 09h09
  5. envoyer une string dans la base sql server
    Par tortuegenie dans le forum ASP.NET
    Réponses: 2
    Dernier message: 23/04/2008, 09h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo