Connexion serveur distant

Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
- - Dernière réponse : LaTatadu91
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
- 30 juil. 2007 à 11:01
Salut a tous,


Voila je developpe a l'heure actuelle un petit programme me permettant
de me connecter à un server SQL distant via C++(sous VS 2005)

alors j'ai trouvé un petit programme simple utilisant ADO et ca marche niquel mais en local .

Impossible de se connecter via un autre pc avec le mm programme ....

pourtant j'ai bien autoriser les connexions TCP/IP et autres canaux.


voici mon prog:
<!-- BEGIN TEMPLATE: bbcode_quote -->
Citation:

#include

#include <stdio.h>

#import "C:\Program Files\Fichiers communs\System\ado\msado15.dll" \

no_namespace rename("EOF","ADOEOF")

void main()

{

//initialise les variables

HRESULT hr;

CoInitialize(NULL);

try

{

//declare la connection

_ConnectionPtr connection;

hr = connection.CreateInstance(__uuidof(Connection));

//vérifie si réussite

if (FAILED(hr))

{

throw _com_error(hr);

}

//declare le recordset

_RecordsetPtr recordset;

hr = recordset.CreateInstance(__uuidof(Recordset));

//verifie si reussite

if (FAILED(hr))

{

throw _com_error(hr);

}

//établi la connection

connection->CursorLocation = adUseClient;

connection->Open("Provider=SQLNCLI;Server=NIVEAU2-03\\SQLEXPRESS;Database=BaseTest;Trusted_Connection=yes;",
L"id",L"pwd", -1);

//ouvre le recordset: crée une table

recordset->Open("CREATE TABLE mytable (value NVARCHAR(255))",

connection.GetInterfacePtr(), adOpenForwardOnly,

adLockReadOnly, adCmdText);

//insere des éléments

recordset->Open("INSERT INTO mytable VALUES ('Hello')",

connection.GetInterfacePtr(), adOpenForwardOnly,

adLockReadOnly, adCmdText);

//insére un second

recordset->Open("INSERT INTO mytable VALUES ('Goodbye')",

connection.GetInterfacePtr(), adOpenForwardOnly,

adLockReadOnly, adCmdText);

//va chercher les éléments

recordset->Open("SELECT * from mytable",

connection.GetInterfacePtr(),

adOpenForwardOnly, adLockReadOnly,

adCmdText);

//les affichent

while(!recordset->ADOEOF)

{

_variant_t var;

var = recordset->Fields->GetItem(L"value")->GetValue();

std::cout << static_cast<char *>(_bstr_t(var.bstrVal))<< std::endl;

recordset->MoveNext();

};

//referme le recordset

recordset->Close();

//détruit la table

/*recordset->Open("DROP TABLE mytable", connection.GetInterfacePtr(),

adOpenForwardOnly, adLockReadOnly,

adCmdText);*/

}

catch(_com_error &e)

{

std::cout << "Impossible de se connecter au serveur distant";

}

catch(...)

{

std::cout << "planté";

};

}

<!-- END TEMPLATE: bbcode_quote -->
donc voila je ne comprends pas le probleme vu que le meme programme marche en local

dois je changer ma connexion string ou installer des trucs ?

C'est mon premier prog sur un serveur distant donc je ne sais pas trop quoi faire...

merci de votre aide d'avance.

 
Afficher la suite 

9 réponses

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
7
0
Merci
Salut,
Remplace le nom de l'ordinateur par l'adresse IP de ton serveur. Exemple:
Server=192.168.1.1\\SQLEXPRESS
Assure-toi d'abord que le réseau est correctement configuré.
Commenter la réponse de racpp
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
0
Merci
deja merci de te pencher dessus ,
alors pour le réseau les deux pc sont sur le meme,
j'ai pinger l'un et l'autre des pcs et ils arrivent a se voir...

je pense aussi avoir deja essayer avec l'adresse complete.
je retest ca...

 
Commenter la réponse de LaTatadu91
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
0
Merci
bon j'ai reessayer avec l'adresse ip:
sur mon pc c'est toujours bon mais sur sur le pc distant toujours rien ...
j'ai aussi autoriser tout le trafic au niveau de FSECURE et desactiver mon firewall sur le pc ou est SQL Server

 
Commenter la réponse de LaTatadu91
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
7
0
Merci
Tu peux vérifier la valeur de retour de la méthode Open():
HRESULT retour=connection->Open(......);
Si tout se passe bien, la valeur de retour doit être égale à 0.
Tu peux aussi utliser les exceptions en mettant ton code dans un bloc try/catch afin d'avoir la description de l'erreur. Exemple:
try {
    //...
    connection->Open(......);
    //...
}catch(_com_error &e){MessageBox(0, (LPCSTR) e.Description(), 0, 0);}
Commenter la réponse de racpp
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
0
Merci
alors pr le retour -->impossible a voir dans un quick watch
sinon pr la message box:

erreur:
impossible de terminer le processus de connexion en raison d'un retard dans l'ouverture de la connexion au serveur

 
Commenter la réponse de LaTatadu91
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
0
Merci
j'ai aussi installer SQL express sur le pc 2 et lorsque je veux y accéder via le pc 1 l'erreur n'est pas la mm:
Interface réseau SQL: Erreur lors de la localisation de Server/Instance spécifié [xFFFFFFFF]

 
Commenter la réponse de LaTatadu91
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
7
0
Merci
As-tu bien installé le "SQL Native Client" sur la machine cliente? C'est indispensable pour pouvoir se connecter au serveur.
Commenter la réponse de racpp
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
0
Merci
Dans SQL Server Management j'ai bien un "SQL Native Client " avec 2 sous repertoires: protocoles clients et alias
et dans protocoles clients : memoire partagée /tcp-ip/cannaux nommés sont activé et VIA est désactivé...

 
Commenter la réponse de LaTatadu91
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
0
Merci
re, bon sur le pc numéro deux j'ai virer tout ce qui peut toucher au pare feu de pres ou de loin
et maintenant j'ai exactement la meme erreur dans les deux sens:
erreur:
impossible de terminer le processus de connexion en raison d'un retard dans l'ouverture de la connexion au serveur

il ne me dit plus : Erreur lors de la localisation de Server/Instance spécifié [xFFFFFFFF]

maintenant ya plus qu'a voir ce qui provoque ceci:
impossible de terminer le processus de connexion en raison d'un retard dans l'ouverture de la connexion au serveur

 
Commenter la réponse de LaTatadu91