Connexion Vb.Net Via Sql Server 2008 [Résolu]

Messages postés
25
Date d'inscription
mardi 3 août 2010
Dernière intervention
17 juillet 2011
- 8 juin 2011 à 20:54 - Dernière réponse :
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
- 13 juin 2011 à 00:04
Bonjour ,

J'aurais besoin de votre aide , J'aimerais faire une connexion sql server 2008 a Visual basic 2008
J'ai deja fait une connexion au sql server en local mais a distance sa ne marche pas , j'ai changer l'ip local en l'ip de ma box mai cela ne marche toujours pas

Merci d'avance

ps :désoler si il y a des fautes
Afficher la suite 

Votre réponse

47 réponses

Meilleure réponse
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
10 juin 2011 à 02:12
3
Merci
Salut,

Pour commencer il te faut utiliser les classe de l'espace de noms 'SqlClient' et non 'SqlServerCe' pour être sûr que l'on parle bien d'une connexion à un serveur SQL et non à une base locale SDF par l'intermédiaire de SQL Serveur Compact Edition (Appelé Base locale sous VS, portant l'extension sdf).

Par la suite tout se joue sur la chaine de connexion. Il existe deux méthodes, la première est l'authentification NTLM (authentification Windows) mais elle permet seulement une connexion locale. La seconde c'est l'authentification distante. Il te faudra déjà installer SQL Serveur sur un poste de ton réseau ou même sur ta machine de développement mais pour faire le test il est préférable d'utiliser deux machines. Une fois SQL Server installé il te faudra te connecter à celui-ci via SQL Server Management Studio en mode NTLM à partir du poste ou est installé le serveur. Une fois connecté l'interface de SSMS te permettra de créer aisément une base et un compte pour l'accès distant (via le nœud sécurité). Crée un compte et conserve le couple login/mot de passe pour l'inclure dans la chaine de connexion de ton programme client. ce site te permettra de trouver la chaine de connexion qui te convient le mieux.

Par la suite pense à ouvrir les ports 1433 et 1434 vers l'IP de ta machine serveur (attention elle sera donc accessible depuis l'extérieur, mais il faudra avoir ton IP, le login et le passe donc il n'y a donc pas de raison de devenir parano non plus ^^).

Au niveau de ta chaine de connexion elle devrait ressembler à ceci :

Data Source=192.168.1.11;Initial Catalog=BaseParDefaut;User Id=Login;Password=Pass;


Ici 192.168.1.11 est l'adresse IP de la machine serveur sur le réseau local bien sûr.

Voila.

++



Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.

Merci Mayzz 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de Mayzz
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
10 juin 2011 à 02:14
0
Merci
Ah et j'oubliais, ouvrir aussi le parfeu windows du PC serveur sur les mêmes ports ^^


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Commenter la réponse de Mayzz
Messages postés
25
Date d'inscription
mardi 3 août 2010
Dernière intervention
17 juillet 2011
10 juin 2011 à 02:16
0
Merci
Merci baucoup pour c'est information , mon parfeu est desactiver dernier question

Pour l'adresse ip c'est pas plustot 192.168.1.11/Le nom du Server ?


Mon site
Commenter la réponse de make13
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
10 juin 2011 à 13:33
0
Merci
Non, c'est l'IP tout cours.

C'est lors ce que tu te connecte en NTLM que tu dois préciser le nom de l'instance précédée du nom de l'ordinateur. Ex: 'PC-DE-MAYZZ\SQLEXPRESS'
Le nom de l'instance est a préciser parce qu'il peut y avoir plusieurs serveur sur le même PC et le nom du pc pour l'identifier bien évidemment.

Par contre j'ai encore omis de préciser une chose, je le dis mais cela coule de source, lors de l'installation SQL Server demande d'activer ou non le mode de connexion distant il faut bien évidemment activer ce mode. Si c'est une installation de SQL Server faite par VS dans ce cas il faut:

Aller dans :

Démarrer > Tous les programmes > Microsoft SQL Server 20xx > Outils de configuration > Gestionnaire de configuration SQL Server 20xx

Dans le gestionnaire développer le nœud 'Configuration de SQL Native Client puis cliquer sur Protocole client. Activer 'TCP' et 'Canaux nommées'

En suite redémarrer le PC ou simplement le service SQL Server.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Commenter la réponse de Mayzz
Messages postés
25
Date d'inscription
mardi 3 août 2010
Dernière intervention
17 juillet 2011
10 juin 2011 à 14:21
0
Merci
J'ai fait tous sa , j'ai fais la connexion avec l'asistance et manuelement mais a distance toujours rien


Mon site
Commenter la réponse de make13
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
10 juin 2011 à 14:27
0
Merci
Si ça ne fonctionne pas c'est forcément que tu t'es trompé quelque part.

Tu procède comment ? Avec deux ordis sur le même réseau reliés par une box ? Ou avec un seul ordi pour client/serveur ?

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Commenter la réponse de Mayzz
Messages postés
25
Date d'inscription
mardi 3 août 2010
Dernière intervention
17 juillet 2011
10 juin 2011 à 14:30
0
Merci
J'ai 2 ordi 1 pour hebergement sql server et autre et l'autre pour les codes

Les 2 ordi son relier sur le meme reseaux
Mon site
Commenter la réponse de make13
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
10 juin 2011 à 14:32
0
Merci
Ok, donc déjà pour savoir quel est l'origine du dysfonctionnement essaye de te connecter à ton serveur de données depuis ton PC client en utilisant SSMS.

En suite poste ici le message d'erreur que tu obtient, normalement c'est 40 ou 26.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Commenter la réponse de Mayzz
Messages postés
25
Date d'inscription
mardi 3 août 2010
Dernière intervention
17 juillet 2011
10 juin 2011 à 14:35
0
Merci
En local tous marche c'est a distance , un problem avec tcp sur je me rapel bien


Mon site
Commenter la réponse de make13
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
10 juin 2011 à 14:42
0
Merci
Ça j'avais bien compris, mais je ne peux pas t'aider avec si peu de détails.

Tu as un Point A, ton PC client, un point B ton serveur SQL, le problème peut se trouver n'importe ou entre les deux...

Quel message tu obtiens avec SSMS ?

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Commenter la réponse de Mayzz
Messages postés
25
Date d'inscription
mardi 3 août 2010
Dernière intervention
17 juillet 2011
10 juin 2011 à 14:54
0
Merci
A distance il me dit error 26


Mon site
Commenter la réponse de make13
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
10 juin 2011 à 15:43
0
Merci
Donc si je me trompe pas le serveur est bien accessible (L'IP existe et est correcte) mais c'est l'interface réseau qui refuse l'ouverture du port 1433. Donc plusieurs possibilités :

- Ta box possède une option à la con (comme beaucoup maintenant) qui n'ouvre que certains port (un page avec un niveau de protection, faible, moyen ou fort) désactive ce pare-feu ou met le au plus faible.

- Essaye aussi de faire pointer une règle NAT (si c'est pas déjà fait), c'est pour les connexion externes mais parfois ça merdouille en interne avec les box made in taiwan :/ Donc crée une règle NAT sur les ports 1433 et 1434 vers ton IP serveur.

- Sur ton pc serveur vérifie bien qu'il n'y ai pas d'autres pare-feu, si t'as installé un antivius parfois ils ont cette fonctionnalité.

- Pour finir tu peux essayer de mettre le nom de l'instance avec l'IP :

192.168.1.15\SQLExpress

Par exemple, et vois ce que ça donne toujours sous SSMS.


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Commenter la réponse de Mayzz
Messages postés
25
Date d'inscription
mardi 3 août 2010
Dernière intervention
17 juillet 2011
10 juin 2011 à 15:46
0
Merci
Je n'est pas danti virus , parfeu desactiver et 192.168.1.15\SQExpress deja tester marche pas, J'ai deja du ouvrir des port sur ma box et tou cela marche tres bien

Je ne sais pas ce qu'est une regle NAT


Mon site
Commenter la réponse de make13
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
10 juin 2011 à 15:57
0
Merci
Une règle NAT te permer de joindre un des PC de ton résau en particuler. Par exemple si je veux étblir une connexion vers ton PC sur un port en particulier je ne peux pas directement car ton adresse est une adresse réseau locale, par exemple 192.168.1.45, de ce fait je dois me connecter à ton réseau donc à l'IP de ta box. Mais celle-ci en recevant ma demande ne sait pas vraiment à quel PC elle s'adresse. Les règle NAT sont la pour ça, en gros tu dis à ta box, toutes les demandes vers le port 1433 (Qui est le port SQL Serveur par défaut) doivent être redirigées vers le PC dont l'IP est 192.168.1.xxx qui correspond à l'adresse du PC serveur. En temps normal c'est étape n'est pas necessaire en local car le PC réseau est directement accessible et connu depuis 192.168.1.10 tu peux accéder à 192.168.1.11. Mais certaines box confondent pare-feu et NAT et bloque le port tant qu'une règle n'est pas définie. C'est débile mais bon, j'ai déjà eu le cas et pas qu'une fois...


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Commenter la réponse de Mayzz
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
10 juin 2011 à 16:00
0
Merci
Ah oui au fait, quand je dis '192.168.1.15\SQLExpress'

C'est un exemple, tu as bien entendu remplacé l'IP par celle de ton serveur et SQLExpress par le nom de ton instance on est bien d'accord ?

Aussi essaye de te connecter depuis SSMS sur ton serveur en mode distant. En saisissant l'IP du serveur, comme ça on sera fixé, si tu te connecte pas le problème vient du PC Serveur et dans le cas contraire c'est ta box qui bloque

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Commenter la réponse de Mayzz
Messages postés
25
Date d'inscription
mardi 3 août 2010
Dernière intervention
17 juillet 2011
10 juin 2011 à 16:30
0
Merci
Ha oui daccord je voi de quoi vous voulez parler ,

Oui j'ai remplacer , en mode distant ca marchera pas car je suis en local


Mon site
Commenter la réponse de make13
Messages postés
25
Date d'inscription
mardi 3 août 2010
Dernière intervention
17 juillet 2011
10 juin 2011 à 16:33
0
Merci
En gros NAT c'est sa Ip de la box/Ip local/Server sql


Mon site
Commenter la réponse de make13
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
10 juin 2011 à 17:17
0
Merci
En gros NAT c'est sa Ip de la box/Ip local/Server sql


Je me suis un peu mal expliqué ^^

Prenons ce schéma

_________ Mon réseau _____________            __________________________________  
|                                |            |                                |
   Mon PC           Ma box                         Ta box           Ton PC   
192.168.1.10 <-> 80.25.241.24 <--> le "Net" <--> 81.254.25.3 <-> 192.168.1.10
                                                                 Ton Serveur
                                                             <-> 192.168.1.11


Si de mon PC je veux accéder à ton SQL Serveur, je vais taper 192.168.1.11 mais cela ne marchera pas. Car ma box va rechercher ce PC dans mon réseau local, elle ignore que que parle de ton réseau local se trouvant à des kilomètres.
Comme je te l'ai dis je devrais donc me connecter à ton IP de box soit 81.254.25.3 sur le port 1433. Ta box recevra une demande sur son IP mais comme elle n'a pas SQL Server d'installer, elle n'ouvrira pas la communication. A moins que tu ne lui assigne un pc vers lequel rediriger la demande. Mais lequel ? 192.168.1.10 ou 192.168.1.11 ? Comment peut-elle le savoir ? C'est à cela que sert les règles NAT. La box reconnais la règle et sais que pour toute demande entrante sur son IP (a elle) et sur un port préci, elle doit rediriger vers un PC du réseau. Exemple de règle NAT pour le cas présent Port entrant 1433 IP 192.168.1.11 et port sortant 1433. En Gros la demande 81.254.25.3:1433 devient 192.168.1.1:1433.

Oui j'ai remplacer , en mode distant ca marchera pas car je suis en local


Je ne comprend pas trop... Même si tu es sur le PC 192.168.1.11 et que tu utilises SSMS en tapant l'adresse 192.168.1.11 cela fonctionnera quand même. Ce n'est pas parce que tu es déjà sur le PC en question que la connexion refusrea de s'établir. Si cela ne fonctionne pas au contraire c'est qie SQL serveur n'est pas configuré pour accepter les connexions entrantes ou que quelque chose bloque le port en question sur le PC, le problème ne viendrait donc pas du réseau.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Commenter la réponse de Mayzz
Messages postés
25
Date d'inscription
mardi 3 août 2010
Dernière intervention
17 juillet 2011
10 juin 2011 à 17:25
0
Merci
Je comprend merci , Si je mais la connexion a mon ip de ma box et que jeseille de mon pc sa ne marche pas et c'est logique maintenant si je mai l'ip local sa marche mai le probleme c'est que si je le fais tester par quelqu'un avec l'ip de ma box cela ne marche toujours pas


Mon site
Commenter la réponse de make13
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
10 juin 2011 à 19:26
0
Merci
Donc la c'est un problème de NAT. Il te faut créer une règle NAT pour les port 1433 et 1434 TCP/UDP vers l'IP de ton serveur. Et téhoriquement ça devrait cadrer.


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Commenter la réponse de Mayzz

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.