409 votes

Activer les connexions à distance pour SQL Server Express 2012

Je viens d'installer SQL Server Express 2012 sur mon serveur domestique. J'essaie de m'y connecter à partir de Visual Studio 2012 depuis mon PC de bureau, et j'obtiens à plusieurs reprises l'erreur bien connue :

Une erreur liée au réseau ou à l'instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur n'a pas été trouvé ou n'était pas accessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions à distance. (fournisseur : Named Pipes Provider, error : 40 - Impossible d'ouvrir une connexion à SQL Server)

Ce que j'ai fait pour essayer de résoudre ce problème :

  • Exécutez SQL Server Configuration Manager sur le serveur et activez SQL Server Browser.
  • Ajoutez une exception au pare-feu Windows sur le serveur pour TCP, les ports 1433 et 1434 sur le sous-réseau local.
  • Vérifier que j'ai un login sur l'instance de SQL Server pour l'utilisateur sous lequel je suis connecté sur le bureau.
  • Vérifier que j'utilise l'authentification Windows sur l'instance de SQL Server.
  • Redémarrer à plusieurs reprises le serveur SQL et tout le serveur.
  • J'arrache tous mes cheveux.

Comment faire pour que SQL Server 2012 Express autorise les connexions à distance ?

7 votes

J'ai résolu le problème en activant le service SQL Server Browser :D. Merci de l'avoir publié.

1 votes

Le déblocage du port UDP 1433 m'a aidé !

1 votes

Et si vous utilisez une VM Azure, n'oubliez pas d'ouvrir le port via le portail de gestion d'Azure également (qui agit comme un pare-feu extérieur au pare-feu de la VM...). Ainsi : stackoverflow.com/questions/34251382/

739voto

Kyralessa Points 76456

Bien, heureux d'avoir demandé . La solution que j'ai finalement découverte se trouve ici :

Comment puis-je configurer SQL Server Express pour autoriser les connexions tcp/ip distantes sur le port 1433 ?

  1. Exécutez SQL Server Configuration Manager.
  2. Allez dans Configuration du réseau du serveur SQL > Protocoles pour SQLEXPRESS.
  3. Assurez-vous que TCP/IP est activé.

Jusqu'ici, tout va bien, et c'est tout à fait normal. Mais ensuite :

  1. Cliquez avec le bouton droit de la souris sur TCP/IP et sélectionnez Propriétés .
  2. Vérifiez que, sous IP2, l'adresse IP est définie sur l'adresse IP de l'ordinateur sur le sous-réseau local.
  3. Faites défiler vers le bas jusqu'à IPAll.
  4. Assurez-vous que Ports dynamiques TCP est vierge . (Le mien était réglé sur un numéro de port à 5 chiffres).
  5. Assurez-vous que Port TCP est réglé sur 1433 . (Le mien était vide.)

(Aussi, si vous suivez ces étapes, c'est ) pas nécessaire pour activer SQL Server Browser, et vous devez seulement autoriser le port 1433, pas le 1434).

Ces cinq étapes supplémentaires sont quelque chose que je ne me souviens pas avoir eu à faire dans une version précédente de SQL Server, Express ou autre. Elles semblent avoir été nécessaires parce que j'utilise une instance nommée (myservername \SQLEXPRESS ) sur le serveur au lieu d'une instance par défaut. Voir ici :

Configurer un serveur pour qu'il écoute sur un port TCP spécifique (SQL Server Configuration Manager)

7 votes

Si SQL Server Express n'est pas la seule instance, il peut être nécessaire d'UNASSIGNER le port 1433 sur les autres instances. J'avais une instance par défaut 2008 R2 (MSSQLSERVER), et la seule façon de me connecter aux deux depuis l'extérieur est d'affecter le port 1433 à l'instance 2012 (comme indiqué ci-dessus) et de modifier les affectations de port pour l'ancienne instance par défaut en Ports dynamiques TCP = "0" et Port TCP = "" (vide). L'inverse ne donne accès qu'à l'instance par défaut.

18 votes

Ce IPAll Le réglage était le conseil du SAUVEUR ! Le mien était comme le tien... :D

20 votes

Au cas où cela aiderait quelqu'un d'autre... cela m'a aidé, mais je n'ai toujours pas pu me connecter jusqu'à ce que je lance le service SQL Server Browser. (Note : J'ai dû aller dans l'application "Services" de Windows pour le faire, parce que le type de démarrage du service SQL Server Browser était "Désactivé" pour une raison quelconque. J'ai changé le type de démarrage en "Automatique", démarré le service, et j'ai ensuite pu me connecter).

109voto

Rosdi Kasim Points 3588

La manière correcte de se connecter à un serveur SQL distant (sans ouvrir le port UDP 1434 et sans activer SQL Server Browser) est d'utiliser ip et port au lieu de instance nommée .

L'utilisation de l'ip et du port au lieu de l'instance nommée est également plus sûre, car elle réduit la surface d'attaque.

Peut-être que 2 images parlent 2000 mots...

Cette méthode utilise le port spécifié (c'est ce que la plupart des gens veulent je crois) .

enter image description here

Cette méthode nécessite l'ouverture du port UDP 1434 et l'exécution de SQL Server Browser .

enter image description here

0 votes

Pouvez-vous préciser ce que vous voulez dire en affirmant que c'est la façon "correcte" de procéder ?

3 votes

@Kyralessa Ha ! ... maintenant que je suis à nouveau sobre après 4-5 heures d'arrachage de cheveux à essayer de me connecter à mon instance distante, je devrais probablement expliquer que 'correct' ici est censé être lu à partir de mon contexte. Il est 'incorrect' de se connecter en utilisant le nom de l'instance puisque je n'ai pas activé le navigateur du serveur SQL.

0 votes

J'ai ajouté quelques précisions à ma réponse pour éviter tout malentendu.

34voto

Pete Points 426

Encore une chose...

Kyralessa fournit d'excellentes informations, mais j'ai une autre chose à ajouter pour laquelle j'ai été bloqué même après cet article.

Sous SQL Server Network Configuration > Protocols for Server > TCP/IP Enabled. Cliquez avec le bouton droit de la souris sur TCP/IP et choisissez Propriétés. Sous Adresses IP, vous devez définir Activé sur Oui pour chaque type de connexion que vous utilisez.

enter image description here

18voto

Ageu Points 104

Vous pouvez l'utiliser pour résoudre ce problème :

Allez dans START > EXECUTE, et exécutez CLICONFG.EXE.

Le protocole Named Pipes sera le premier de la liste, il sera rétrogradé au profit de TCP/IP.

Testez l'application de manière approfondie.

J'espère que cela vous aidera.

0 votes

Wow, quelle perle... merci. Je ne savais même pas que ça existait.

1 votes

Cela permet de configurer le CLIENT pour utiliser TCP/IP, pas le serveur.

0 votes

OMG, ça marche ! Je viens de me connecter pour voter pour cette réponse. Merci.

15voto

johnroster Points 121

Vous pouvez également définir

Ecoutez tous les NO

dans le dialogue de protocole puis dans l'adresse IP IP1 (disons)

définissez l'activation sur Oui,

définir votre adresse IP,

définissez TCP Dynamic sur Blank et

Port TCP à 1433 (ou autre)

0 votes

En faisant cela sur Windows 8.1 avec SQL 2012 Express SP1 installé, SQL se bloque au démarrage :(

0 votes

J'ai réglé toutes les entrées IP 1, 2, ..., sur activé + actif, effacé dynamique, effacé port, et réglé le port IPAll sur 1433, puis j'ai dû ajouter des règles pour ouvrir TCP 1433 et UPD 1434 dans le pare-feu (1434 n'est pas nécessaire si on n'utilise pas le nom, mais seulement le numéro de port).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X