Comment accéder à une base de données SQL Server à partir d'un autre ordinateur connecté au même groupe de travail?


11

J'ai créé une application C # qui utilise une base de données SQL Server. J'ai d'autres ordinateurs connectés à moi et entre eux dans un groupe de travail. J'ai partagé mon application C # avec d'autres. Lorsqu'ils ouvrent l'application, ils obtiennent l'erreur

Une erreur liée au réseau ou spécifique à l'instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou inaccessible

Mais l'application fonctionne bien sur mon PC. La chaîne de connexion que j'utilise est

Data Source=ASHISHPC1\SQLEXPRESS;Initial Catalog=ACW;User ID=ash159;Password=ashish159

qui est stocké dans un .configfichier.

L'application fonctionne bien sur mon PC. Que dois-je faire? J'ai activé le TCP / IP sur le serveur mais la même erreur persiste. Un changement dans la chaîne de connexion ou autre chose?


1
essayez d'utiliser l'adresse IP pour la «source de données»
Mitch Wheat

1
Essayez de désactiver le pare-feu Windows ... vérifiez également technet.microsoft.com/en-us/library/hh231672.aspx . Cela devrait fonctionner pour vous.

3
Il n'est pas nécessaire de désactiver le pare-feu Windows - veuillez arrêter de propager ce mythe! Voir ma réponse ci-dessous.
Jon Seigel

Réponses:


17

Il y a deux niveaux de sécurité qui doivent être modifiés afin de permettre l'accès à distance.

  1. Configuration de SQL Server . Par défaut dans les éditions Express, Developer et Enteprise Evaluation, la connexion par le protocole TCP / IP est désactivée . Activez cela à l'aide de SQL Server Configuration Manager.

  2. Pare-feu Windows . Bien que la désactivation complète du pare-feu fonctionne pour ce composant, cela n'est pas une meilleure pratique de sécurité (ni obligatoire). (Remarque: dans cette section, je suppose une configuration par défaut . Il existe de nombreux paramètres qui peuvent être modifiés, ce qui affecte légèrement ces étapes.)

    Il existe deux cas selon le type d'instance SQL Server auquel vous vous connectez:

    1. Instance par défaut (connexion par nom d'ordinateur uniquement). Ajoutez une règle d'autorisation entrante sur le port TCP 1433 ou le service du moteur de base de données.

    2. Instance nommée (connexion par nom d'ordinateur + nom d'instance). Ajoutez une règle d'autorisation entrante sur le port UDP 1434 pour accéder au service SQL Browser. Ajoutez une règle d'autorisation entrante sur le service du moteur de base de données.

Cette procédure est entièrement documentée ici , ou vous pouvez me regarder m'expliquer, puis parcourir la configuration d'une instance nommée ici .


0

Vous devez définir les paramètres réseau corrects dans votre SQL-Server: TCP / IP actif dans SQL-Server Assurez-vous également que votre service Browser-Service est en cours d'exécution, car s'il est arrêté, vous ne pouvez pas accéder au SQL- Serveur.


0

Assurez-vous que le service sqlbrowser est activé comme mentionné par bendeg et que UDP 1434 est ouvert sur votre machine afin que les clients puissent accéder au sqlbrowser afin de résoudre le nom. Ouvrez également le port TCP / IP de l'instance nommée.

Pour trouver le port de votre instance, connectez-vous en utilisant le préfixe tcp: dans Management Studio comme ceci: tcp: ASHISHPC1 \ SQLEXPRESS et le résultat de la requête ci-dessous devrait être le port que vous devez exposer aux clients de votre groupe de travail.

SELECT local_tcp_port FROM sys.dm_exec_connections WHERE session_id = @@SPID

-1

J'ai désactivé le pare-feu Windows pour le réseau domestique et cela a bien fonctionné .. Merci à tous .. :)


5
Si c'était votre question, vous devez vous connecter ici avec les mêmes informations d'identification que vous avez utilisées sur le site d'origine ( Stack Overflow ) afin que vous puissiez devenir propriétaire de la question ici.
jcolebrand

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.