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

PHP & Base de données Discussion :

[PHP/Access] SQL state S1000 in SQLConnect [ODBC]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 95
    Points : 77
    Points
    77
    Par défaut [PHP/Access] SQL state S1000 in SQLConnect
    Bonjour,

    Bon je sais, c'est pas top de poster direct un problème comme premier message mais je suis dans une impasse dont je ne vois réellement pas l'issue...
    Voilà maintenant plus de 48H que je planche avec un autre stagiaire sur un problème et on ne trouve désespéremment pas. On a reçu l'aide d'un 3ème développeur une après-midi mais on est encore bloqué.

    Bon voilà petit topo rapide :

    J'ai un appli en PHP qui gère des contrat de maintenance qui tourne sur un serveur dont l'adresse est de type XXX.XXX.XXX.161. Cette appli est reliée à deux bases de données : une base de donnée "de production" type MySQL qui est hébergée sur le même serveur et une base de donnée commerciale type Access 2000 qui tourne sur un autre serveur dont l'adresse est de type XXX.XXX.XXX.160 ( ces 2 serveurs ne sont pas sur le même domaine ).

    Or voilà : pas moyen de se connecter sur la BDD Access.

    Lorsque j'utilise ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $db_login="Admin"; // nom d'utilisateur
    $db_pwd=""; // mot de passe
     
    $db_name = "Driver={Microsoft Access Driver (*.mdb)};Dbq=\\XXX.XXX.XXX.160\APISOFT\GEST_EXP\SOCEX\GestC.mdb;Uid=Admin;Pwd=;";
    $cnx_gcom = odbc_connect($db_name,$db_login,$db_pwd) or die ('Impossible de se connecter');
    J'obtiens ce message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Warning: odbc_connect(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] '(Inconnu)' n'est pas un chemin d'acc?valide. Assurez-vous que le nom du chemin d'acc?est correct et qu'une connexion est ?blie avec le serveur sur lequel r?de le fichier., SQL state S1009 in SQLConnect in C:\appli_savcm\savcm\scripts\cnx_gcom.php on line 21
    Impossible de se connecter
    Et lorsque je double les antislash du chemin d'accès comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $db_login="Admin"; // nom d'utilisateur
    $db_pwd=""; // mot de passe
    $db_name = "Driver={Microsoft Access Driver (*.mdb)};Dbq=\\\\XXX.XXX.XXX.160\\APISOFT\\GEST_EXP\\SOCEX\\GestC2.mdb;Uid=Admin;Pwd=;";
    $cnx_gcom = odbc_connect($db_name,$db_login,$db_pwd) or die ('Impossible de se connecter');
    J'obtiens une erreur sensiblement différente :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Warning: odbc_connect(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Le moteur de la base de donn? Microsoft Jet ne peut pas ouvrir le fichier '(Inconnu)'. Il est d? ouvert en mode exclusif par un autre utilisateur, ou vous devez avoir l'autorisation de visualiser ses donn?., SQL state S1000 in SQLConnect in C:\appli_savcm\savcm\scripts\cnx_gcom.php on line 21
    Impossible de se connecter
    Nous avons aussi tenté cette chaine de connection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $db_name ="Driver={Microsoft Access Driver (*.mdb)};
                    Dbq=\\\\XXX.XXX.XXX.160\\APISOFT\\GEST_EXP\\SOCEX\\GestC.mdb;
                    UserCommitSync=No;
                    Threads=3;
                    SafeTransactions=0;
                    PageTimeout=5;
                    MaxScanRows=8;
                    MaxBufferSize=2048;
                    DriverId=281;
                    Option=3;
                    DefaultDir=C:/ProgramFiles/CommonFiles/ODBC/DataSources";
    ( avec et sans le paramètre Option ) mais toujours la même erreur.

    Je tiens à préciser que :

    • La base Access ne s'ouvre pas en mode Exclusif
    • J'ai créé une BDD du même type vierge et j'obtiens toujours le même message d'erreur
    • J'arrive bien à accéder à ma BDD physiquement via le partage
    • La chaine de connection, le mot de passe et le login sont par défaut, je les ai trouvé sur internet; cependant il n'y a aucun login et MDP sur la BDD Access. Mais quel que soit les identifiants que j'utilise, l'erreur reste la même.
    • Quand on installe la BDD commerciale sur le MEME serveur que la BDD de prod, c'est à dire qu'on met tout en local, SA FONCTIONNE.


    Du coup le problème ne semble pas venir de l'appli ( on a essayé un million de chaine de connexion différente ), ni de la BDD Access, donc cela viendrait peut-être d'un problème réseau...

    Si quelqu'un avait une petite idée, sa nous aiderait grandement.
    Merci de toutes vos réponses

  2. #2
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    95
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 95
    Points : 77
    Points
    77
    Par défaut
    Bon j'ai enfin finis par trouver la solution (seul en l'occurence) donc je vais me répondre à moi-même, sa pourra surement aider :

    La source du problème ne venait aucunement de la chaine de connection ODBC ou du pilote ODBC Microsoft Access mais comme je le supposait d'une "mauvaise configuration" de IIS.

    En effet, le compte utilisé pour les connexion anonymes à l'appli sur le serveur en XXX.XXX.XXX.161 n'avait pas suffisamment d'autorisations pour accéder au serveur en 160. Ce compte par défaut est un compte généré par IIS qui porte le nom IUSR_<Nom_de_l'Ordinateur>.

    Il faut donc :

    1/ Sur le serveur avec IIS : Clik droit sur Poste de Travail > Gérer > Utilisateur et Groupe locaux > Utilisateurs > Clik droit sur IUSR_<Nom_de_lOrdinateur> > Propriété.
    Dans l'onglet "Membre de", ajouter le groupe Utilisateurs.

    2/ Sur la machine faisant office de controleur de domaine, en l'occurence pour moi il s'agit aussi du serveur qui héberge la BDD Access 97, aller dans Utilisateurs et Ordinateurs Active Directory, dérouler l'arborescence du domaine > Users >clik droit sur Invité > Activer le compte.

    Normalement c'est 2 manips suffisent.
    Si par malheur vous perdiez le mot de passe de IUSR_<Nom_de_lOrdinateur>, retourner à l'étape 1 et au lieu de faire "Clik droit sur IUSR_<Nom_de_lOrdinateur> > Propriété", faites "Clik droit sur IUSR_<Nom_de_lOrdinateur> > Changer le mot de passe".

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

Discussions similaires

  1. [Toutes versions] php et SQL et Base de données accesse
    Par mouna011985 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/06/2012, 12h05
  2. [SQL-Server] Connexions sur la base de données (SQL state S1000)
    Par marcandre dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 15/07/2009, 12h14
  3. Réponses: 6
    Dernier message: 03/09/2006, 15h00
  4. Pb migration Access / SQL server
    Par yoyo dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 25/04/2005, 10h39
  5. Migration Access > SQL Server (suite) : Compteur
    Par LadyArwen dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/03/2003, 14h08

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