none
Connexion base SQL Server 2012 à l'aide de sqlsrv depuis un poste distant RRS feed

  • Question

  • Bonjour à tous,

    Je vous présente ma situation, j'ai une base de données Microsoft SQL Server 2012 Express d'installé sur un ordi sous Windows 7. Et sur un autre ordi sous Windows Server 2003 j'ai mon site web qui tourne avec Wamp. Ce dernier doit se connecter à ma base MSSQL distante afin de récupérer des données, puis les enregistrer sous ma base locale.

    Or, impossible de se connecter à ma base MSSQL à l'aide de mon fichier PHP contenant mes requêtes. Notamment ma requête "sqlsrv_connect".

    J'ai fait tout ce qu'il y avait à faire pour ouvrir le port 1433. J'ai même essayer avec SQL Server Management Studio pour voir, et là ça marche très bien.

    Que dois-je faire de plus ?

    Merci de votre aide !!!

    mercredi 16 mai 2012 14:26

Réponses

  • Bonjour,

    Alors je ne sais pour quelles raisons, mais après avoir installé SQL Server 2012 Express sur un autre ordinateur, ça marche. Ce qui m'inquiètes un peu parce que du coup si c'était un problème de compatibilité, qui me dit que cela ne va pas se reproduire dans la suite de mon projet...

    Mais enfin bon, au pire je reviendrais vers vous à ce moment là.

    En tout cas merci à vous pour votre aide !!

    À ++
    • Marqué comme réponse gsoub lundi 21 mai 2012 07:17
    lundi 21 mai 2012 07:17

Toutes les réponses

  • Bonjour,

    Le test avec SQL Server Management Studio est bien fait depuis la même machine que celle qui fait tourner PHP (et non pas depuis la machine où est installé SQL Server) ? Et bien sûr merci de TOUJOURS indiquer le message d'erreur obtenu ce qui permet souvent de mieux cerner le problème ! Je dirais que la chaine de connexion n'est pas correcte ?

    Si l'erreur est masquée par la fonction de connexion, voir peut--être http://www.php.net/manual/en/function.sqlsrv-errors.php pour récupérer plus d'info sur l'erreur de connexion ?


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".





    mercredi 16 mai 2012 16:01
  • Bonjour,

    Oui, bien entendu le test a été effectué depuis une machine distante.

    Je n'ai pas indiqué de message d'erreur car il n'y en a pas vraiment. L'erreur c'est que la fonction sqlsrv_connect() ne retourne pas de lien. D'où la suite des requêtes ne peuvent pas être exécutées...

    En ce qui concerne sqlsrv_errors(), celle-ci me renvoie la valeur "null", je ne sais quoi en déduire.

    Merci !

    jeudi 17 mai 2012 09:54
  • Le test avec SQL Server Management Studio est bien fait depuis la même machine que celle qui fait tourner PHP (et non pas depuis la machine où est installé SQL Server) ?

    Par contre je n'ai pas pu faire sur la machine faisant tourner PHP pour la simple raison que l'installation de SQL Server Management Studio m'est impossible à cause d'une erreur...

    Est-ce que cela pourrait avoir une incidence ?

    vendredi 18 mai 2012 09:57
  • Essayez peut-être un forum PHP pour voir comment récupérer les erreurs ? J'imagine qu'il doit bien être possible de récupérer pourquoi une connexion échoue  ce que semble d'ailleurs faire le code ici : http://php.net/manual/en/function.sqlsrv-connect.php (utilise bien sqlsrv_errors() en cas d'échec).

    Sinon faire peut-être un test en VBScript. Un fichier .vbs avec qq chose comme :

    Set o=CreateObject("ADODB.Connection")
    o.Open "Provider=SQLOLEDB;Data Source=SERVER\INSTANCE;Integrated Security=true"
    Set rst=o.Execute("SELECT 1")
    MsgBox rst.Fields(0)
    rst.Close
    cnn.Close

    (non testé) devrait permettre de vérifier que l'on peut atteindre le serveur SQL à partir du serveur PHP...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".


    vendredi 18 mai 2012 20:17
  • Bonjour,

    Alors je ne sais pour quelles raisons, mais après avoir installé SQL Server 2012 Express sur un autre ordinateur, ça marche. Ce qui m'inquiètes un peu parce que du coup si c'était un problème de compatibilité, qui me dit que cela ne va pas se reproduire dans la suite de mon projet...

    Mais enfin bon, au pire je reviendrais vers vous à ce moment là.

    En tout cas merci à vous pour votre aide !!

    À ++
    • Marqué comme réponse gsoub lundi 21 mai 2012 07:17
    lundi 21 mai 2012 07:17
  • Au peut-être un pb de firewall sur l'ordinateur concerné ? Le premier point serait sans doute de voir comment récupérer l'erreur en PHP (par exemple un problème d'authentification ou de serveur non joignable permettrait déjà de débrousailler le terrain).

    Sinon cf le script VBS précédent qui permet facilement de tester un accès depuis n'importe quel serveur vers n'importe quel serveur dans les conditions de base, vbs et ADO étant à priori installé avec Windows...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    lundi 21 mai 2012 08:27
  • Le pare-feu ? Je ne pense pas, car j'ai paramétrer afin d'avoir le port 1433, celui de SQL Server, d'ouvert pour pouvoir me connecter justement. Et j'ai pu le vérifier grâce à SQL Server Management Studio.

    Mais pour le moment je laisse cet ordi de côté car ce n'était que pour faire un test réel de mon site web avec ses composants. Le vrai but est de se connecter sur d'autres serveurs distants. Et c'est là que je verrais bien si j'ai un problème. Et si c'est le cas, le script VBS aura son utilité ;-)

    lundi 21 mai 2012 08:32