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

ASP.NET Discussion :

[VS2003] Connexion distante à SQL Server 2000


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Par défaut [VS2003] Connexion distante à SQL Server 2000
    Bonjour,

    Bien qu'il y ait pas mal de posts sur ce sujet, je n'ai pas réussi à résoudre mon problème.

    Contexte :
    - Application ASP.NET (C#) qui doit se connecter à une base SQL Server 2000 distante. J'ai une page Web classique de connexion login + password avec un bouton connexion.
    - Mode d'authentification : Windows.
    - IIS : j'ai décoché l'accès anonyme et juste cocher l'authentification Windows intégrée.
    - Mon compte Windows est bien crée dans ma BD SQL Server et dispose des droits adéquats, tout comme l'utilisateur ASPNET.

    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
    49
    50
    51
    52
    /// <summary>
    /// Initialisation de la chaîne de connexion.
    /// </summary>
    /// <param name="p_login">Login de l'utilisateur.</param>
    /// <param name="p_password">Mot de passe de l'utilisateur.</param>
    private static void initializeConnectionString(string p_login,string p_password)
    {
      connectionString += "Server=nom_du_serveur";
      connectionString += ";Database=nom_de_la_BD";
      connectionString += ";User Id="+p_login;
      connectionString += ";Password="+p_password;
      connectionString += ";Integrated Security=SSPI";
    }
    
    /// <summary>
    /// Vérifie que l'utilisateur est valide.
    /// </summary>
    /// <param name="p_login">Login de l'utilisateur.</param>
    /// <param name="p_password">Mot de passe de l'utilisateur.</param>
    /// <returns>true si l'utilisateur est valide ; false sinon.</returns>
    public static bool userAuthenticate(string p_login,string p_password)
    {
      initializeConnectionString(p_login,p_password);
    
      try
      {
          SqlConnection oConnection=new SqlConnection(connectionString);
          oConnection.Open();
          oConnection.Close();
    
          return true;
      }
      catch(Exception e)
      {
          return false;
      }
    }
    
    /// <summary>
    /// Lorsque l'utilisateur clique sur le bouton "Connexion".
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void Button_Connexion_Click(object sender, System.EventArgs e)
    {
      //Si l'utilisateur est correctement authentifié, on lui crée une session.
      if(userAuthenticate(this.TextBox_Login.Text,this.TextBox_Password.Text))
      {
          //Code de création de session, renvoi sur la page de démarrage, etc.
      }
    }
    En mode debug, quand je passe sur oConnection.Open() le navigateur "réfléchit" pendant 15-20 secondes (la barre bleue en bas du navigateur défile lentement) puis j'obtiens l'exception {"SQL Server n'existe pas ou l'accès est refusé."}

    Du coup, je sèche un peu pour savoir d'où vient le problème. (et le DNS fonctionne correctement, j'ai fait un ping sur le nom du serveur, j'obtiens bien son IP et les 4 paquets de réponse de base).

    Donc si une âme charitable voit où j'ai manqué le tournant, ça serait fort aimable à elle de me re-aiguiller sur le bon chemin.

    D'avance merci.

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      connectionString += "Server=nom_du_serveur";
      connectionString += ";Database=nom_de_la_BD";
    T'as bien remplacé nom_du_serveur et nom_de_la_DB par leur valeur au moins?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Par défaut
    T'as bien remplacé nom_du_serveur et nom_de_la_DB par leur valeur au moins?
    Oui oui, ça m'arrive de faire des erreurs excessivement stupides comme celles-là, j'ai juste caché les noms ici

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Essaye de te connecter à ta DB avec VS.
    Il va te créer la chaine de connexion

  5. #5
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Par défaut
    Si tu te connectes en Intergrated security tu ne dois pas fournir de username et password dans ta connection string.

    Connection string : "datasource=[Nom du serveur]; initial catalog=["Nom de la db];Integrated Security=True"

    Ludovic,
    Envie de contribuer à la rubrique SharePoint ? Contactez moi par MP !

    SharePoint : http://sharepoint.developpez.com
    Mon site : http://lefortludovic.developpez.com
    Mon blog : http://www.consultpoint.net/blog

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Par défaut
    Tout à fait, mais le problème c'est que je me connecte en Integrated Security=true sans password, ou en false avec user id + password, j'ai toujours la même erreur. Enfin, merci tout de même de cette précision.

    Sinon j'ai testé la récupération de connectionString via VS directement. Donc là, ma connexion fonctionne, je récupère la connectionString et je la copie-colle dans mon objet Connection (en enlevant les paramètres qui renvoient une exception du type : paramètre non valide dans la chaîne de connexion) et j'ai toujours le même souci. Donc du coup, je vois vraiment pas où est-ce que ça pêche. C'est désespérant, surtout qu'il doit s'agir d'une erreur toute bête à tous les coups.

    Si j'arrive à debuger ça, je le ferais savoir.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Par défaut
    Ca y est ça fonctionne. Il manquait cette ligne à rajouter dans le fichier web.config :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <system.web>
      <identity impersonate = "true" />
      ...
    </system.web>

  8. #8
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Par défaut
    Oui donc ça signifie que la sécurité dans la db ne donnait pas accès au user qui utilisait l'application.

    Cette ligne signifie que maintenant l'accès à la db se fait avec le user ASPNET
    Envie de contribuer à la rubrique SharePoint ? Contactez moi par MP !

    SharePoint : http://sharepoint.developpez.com
    Mon site : http://lefortludovic.developpez.com
    Mon blog : http://www.consultpoint.net/blog

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

Discussions similaires

  1. Sauvegarde de la base a un serveur distant SQL SERVER 2000
    Par rezgui_fawzi dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 16/11/2007, 13h50
  2. connexion base sql server 2000
    Par gdebre dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 05/04/2007, 12h12
  3. connexion BO, sql server 2000 ?
    Par donny dans le forum Deski
    Réponses: 1
    Dernier message: 01/03/2006, 11h42
  4. Connection Serveur Distant SQL Server 2000
    Par LeNeutrino dans le forum JBuilder
    Réponses: 2
    Dernier message: 16/11/2005, 10h45
  5. connexion à distance à SQL Server 2000 à partir d'Access2003
    Par FlicEnFlac dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/10/2005, 16h26

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