Partage
  • Partager sur Facebook
  • Partager sur Twitter

Accès à une base de donnée avec instande nommée

Sujet résolu
    4 novembre 2010 à 13:49:40

    Bonjour,
    je souhaite accéder à une base de données MSSQL avec instance nommée via l'extension PDO.

    je lance la commande suivante :
    $bdd = new PDO('mssql:host=nom01\nom02;dbname=Unmanage_Table', '*****', '*****');

    je souhaite donc acceder à la base nom01\nom02 sur mon propre server mais lorsque je lance cette comande, voici ce que Internet explorer 6 m'affiche le message d'erreur suivant:

    PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] General SQL Server error: Check messages from the SQL Server. (severity 5)' in C:\www\Unmanage\connect.inc.php:19 Stack trace: #0 C:\www\Unmanage\connect.inc.php(19): PDO->__construct('mssql:host=nom1/...', 'sa', 'catherin1') #1 C:\www\Unmanage\UnmanageTextArea.php(5): include('C:\www\Unmanage...') #2 C:\www\Unmanage\index.php(11): include('C:\www\Unmanage...') #3 {main} thrown in C:\www\Unmanage\connect.inc.php on line 19

    à savoir que la page connect.inc.php est une page qui sert de connection et qui contient à la ligne 19 le code suivant :

    $bdd = new PDO('mssql:host=nom01\nom02;dbname=Unmanage_Table', '*****', '*****');

    Cette page est appelée dans la page UnmanageTextArea.php

    j'ai ensuite essayé avec la commande suivante :
    try{
    	$bdd = new PDO('mssql:host=nom01\nom02;dbname=Unmanage_Table', '*****', '******');
    }
    // En cas d'erreur, on affiche un message et on arrête tout
    catch (PDOException $e){
        die('Erreur : ' . $e->getMessage());
    }
    

    Mais j'ai toujours un message d'erreur.

    Erreur : SQLSTATE[HY000] General SQL Server error: Check messages from the SQL Server. (severity 5)PHP Notice: Undefined variable: attributes in C:\www\Unmanage\connect.inc.php on line 21


    merci de votre aide
    • Partager sur Facebook
    • Partager sur Twitter
      4 novembre 2010 à 14:06:07

      bonjour,
      Undefined variable: attributes in C:\www\Unmanage\connect.inc.php on line 21
      Et le code de la ligne 21 ?
      • Partager sur Facebook
      • Partager sur Twitter
        4 novembre 2010 à 14:23:36

        le code de la ligne 21 est la même que celui de la ligne 19 :
        $bdd = new PDO('mssql:host=nom01\nom02;dbname=Unmanage_Table', '*****', '*****');

        c'esy juste que j'ai décalé de deux ligne en rajoutant
        try
        {
        • Partager sur Facebook
        • Partager sur Twitter
          4 novembre 2010 à 15:01:39

          re,
          essaie une connexion simple sans include.
          Tu verras bien si c'est la connexion qui échoue ou un problème d'inclusion.

          Au passage un require_once() ou include_once() est préférable.
          Et au passage une gestion d'exception sur tout le script, et pas seulement sur la connexion est préférable :
          <?php
              try
              {
                  $cn = new PDO("dsn", "ut", "mdp");
                  $cn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
          
                  // ton code, par exemple un petit SELECT
                  $cn = null;
              }
              catch(PDOException $e)
              {
                  echo "<br />", $e->getMessage();
              }
          ?>
          

          PS : le numéro de ligne parfois n'est pas significatif.
          L'erreur peut se produire ailleurs, plus loin.
          Question bête. Ton serveur BD est bien démarré?
          Et au passage ton post est plutôt forum PHP que BD :)
          • Partager sur Facebook
          • Partager sur Twitter
            4 novembre 2010 à 15:28:13

            Hello,
            ton code permet à ie de m'afficher la page, mais le message d'erreur est toujours la ..
            oui ma base de donnée (sql server 2005) est bien connectée
            Je pense qu'il n'arrive pas à s'y connecter à cause de l'instance nommée ...
            Pour l'instnt, su ma page connect.inc.php, il n'y a rien en dehors de ce code.

            J'ai essayé avec le code suivant , sans succès, je pense vraiment que c'est un problème de connexion à la bdd :
                    $con =mssql_connect($serverLchost,$userIDLchost,$passwordLchost) or die("couldn't connect to Server NSM");
                            mssql_select_db($bdNSM,$con) or die("couldn't connect to DB NSM");


            voici ce qu'il m'affiche:

            couldn't connect to DB nom01 Warning: mssql_select_db() [function.mssql-select-db]: message: Could not locate entry in sysdatabases for database 'Unmanage'. No entry found with that name. Make sure that the name is entered correctly. (severity 16) in C:\www\Unmanage\connect.inc.php on line 42 PHP Warning: mssql_select_db() [function.mssql-select-db]: Unable to select database: Unmanage in C:\www\Unmanage\connect.inc.php on line 42
            • Partager sur Facebook
            • Partager sur Twitter
              4 novembre 2010 à 16:24:23

              là le message est clair.
              Pour lui la BD Unmanage n'existe pas.
              Après passer par PDO ou l'API mssql_ c'est simplement changer d'API et de pilote.

              • Partager sur Facebook
              • Partager sur Twitter
                4 novembre 2010 à 16:51:28

                J'ai touvé !
                merci a vous
                • Partager sur Facebook
                • Partager sur Twitter

                Accès à une base de donnée avec instande nommée

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown