web-dev-qa-db-fra.com

Activer les connexions à distance pour SQL Server Express 2012

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

Une erreur liée au réseau ou à une instance spécifique s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou inaccessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions à distance. (fournisseur: fournisseur de canaux nommés, erreur: 40 - Impossible d'ouvrir une connexion à SQL Server)

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

  • Exécuter le Gestionnaire de configuration SQL Server sur le serveur et activer le navigateur SQL Server
  • Ajoutez une exception de pare-feu Windows sur le serveur pour TCP, les ports 1433 et 1434 sur le sous-réseau local.
  • Vérifiez que je dispose d'une connexion sur l'instance SQL Server pour l'utilisateur auquel je suis connecté en tant que sur le bureau.
  • Vérifiez que j'utilise l'authentification Windows sur l'instance SQL Server.
  • Redémarrez à plusieurs reprises SQL Server et l’ensemble du serveur Dang.
  • Tirez tous mes cheveux.

Comment puis-je obtenir que SQL Server 2012 Express autorise les connexions à distance!?

392
Ryan Lundy

Eh bien, content d'avoir demandé . La solution que j'ai finalement découverte était là:

Comment configurer SQL Server Express pour autoriser les connexions TCP/IP à distance sur le port 1433?

  1. Exécutez le Gestionnaire de configuration SQL Server.
  2. Accédez à Configuration du réseau SQL Server> Protocoles pour SQLEXPRESS.
  3. Assurez-vous que TCP/IP est activé.

Jusqu'ici, tout va bien, et tout à fait prévu. Mais alors:

  1. Cliquez avec le bouton droit 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 jusqu'à IPAll.
  4. Assurez-vous que TCP Dynamic Ports est blank. (Mine a été défini sur un numéro de port à 5 chiffres.)
  5. Assurez-vous que TCP Port est défini sur 1433. (Le mien était vide.)

(En outre, si vous suivez ces étapes, il est nécessaire que non pour activer le navigateur SQL Server et vous devez uniquement autoriser le port 1433, et non 1434.)

Je ne me souviens pas que ces cinq étapes supplémentaires aient déjà été accomplies dans une version précédente de SQL Server, Express ou autre. Ils semblent avoir été nécessaires car j'utilise une instance nommée (myservername\SQLEXPRESS) sur le serveur au lieu d'une instance par défaut. Vois ici:

Configurez un serveur pour qu'il écoute sur un port spécifique TCP (Gestionnaire de configuration SQL Server) }

721
Ryan Lundy

La bonne façon de se connecter à SQL Server distant (sans ouvrir le port UDP 1434 et activer le navigateur SQL Server) consiste à utiliser ip et port au lieu de instance nommée .

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

Peut-être 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 du navigateur SQL Server en cours d'exécution ..

enter image description here

102
Rosdi Kasim

Encore une chose ...  

Kyralessa fournit d'excellentes informations, mais j'ai une autre chose à ajouter là où j'ai été perplexe, même après cet article.

Sous Configuration du réseau SQL Server> Protocoles pour le serveur> TCP/IP activé. Cliquez avec le bouton droit sur TCP/IP et choisissez les propriétés. Sous les adresses IP, vous devez définir Enabled sur Oui pour chaque type de connexion que vous utilisez.

enter image description here

30
Pete

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

Allez dans START> EXECUTE, et lancez CLICONFG.EXE.

Le protocole Named Pipes figurera en premier dans la liste. Supprimez-le et promouvez TCP/IP.

Testez l'application à fond.

J'espère que cette aide.

17
Ageu

Vous pouvez également définir 

Écoutez tout à NO 

dans le dialogue de protocole, puis dans l'adresse IP IP1 (par exemple) 

mis activé à Oui, 

définir votre adresse IP, 

définir TCP dynamique sur vide et 

Port TCP à 1433 (ou autre) 

14
johnroster

J'ai eu ce problème récemment. 2015 août

Résolu en ouvrant SQL Server Configuration Manager

  • Configuration réseau SQL Server -> Protocoles pour SQLEXPRESS
  • Propriétés sous TCP/IP -> onglet Adresses IP
  • Tout reste par défaut, définissez uniquement IPALL: TCP Port sur 1433

Peut se connecter à avec SQL Server Manager à la machine: [hostaddress], 1433

Exemple:

 enter image description here

10
DDan

Cet article m'a aidé ...

Comment activer les connexions distantes dans SQL Server

Tout était configuré dans SQL Server. Mon problème était que le pare-feu bloquait le port 1433.

9
JGilmartin

Sur mon installation de SQL Server 2012 Developer Edition, installée avec les paramètres par défaut, il me suffisait de charger le Gestionnaire de configuration SQL Server -> Configuration réseau SQL Server -> Protocoles pour MSSQLSERVER et de changer TCP/IP de Désactivé à Activé.

6
Phil

J'ai dû ajouter une règle de port entrant du pare-feu pour ouvrir le port UDP 1434. Il s'agit du navigateur Sql Server à l'écoute. 

5
tom redfern

J'ai eu le même problème avec l'instance nommée SQL Server 2014 installée localement. La connexion à l'aide du FQDN\InstanceName échouerait, alors que la connexion utilisant uniquement mon hostname\InstanceName fonctionnait. Par exemple: la connexion à l'aide de mycomputername\sql2014 a fonctionné, mais pas de mycomputername.mydomain.org\sql2014. Le DNS a été résolu correctement, TCP/IP a été activé dans SQL Configuration Manager, des règles de pare-feu Windows ont été ajoutées (puis ont désactivé le pare-feu à des fins de test afin de s’assurer qu’il ne bloquait rien), mais aucun de ceux-ci n’a résolu le problème. 

Enfin, je devais démarrer le service "SQL Server Browser" sur SQL Server, ce qui corrigeait le problème de connectivité. 

Je n'avais jamais réalisé que le service SQL Server Browser aidait réellement SQL Server à établir des connexions. J'avais l'impression que cela aidait simplement à remplir les listes déroulantes lorsque vous cliquez sur "parcourir davantage" de serveurs, mais cela aide en fait à aligner les demandes des clients sur le bon numéro de port à utiliser, si le numéro de port n'est pas explicitement attribué (similaire). comment les liaisons de sites Web permettent de résoudre le même problème sur un serveur Web IIS hébergeant plusieurs sites Web).

Cet élément de connexion est ce qui m'a permis de comprendre le service SQL Server Browser: https://connect.Microsoft.com/SQLServer/feedback/details/589901/unable-to-connect-on-localhost-using-fqdn- nom de la machine

  • lorsque vous utilisez wstst05\sqlexpress comme nom de serveur, le code client sépare le nom de la machine du nom de l'instance et le nom de wstst05 est comparé au nom netbios. Je ne vois pas de problème pour qu'ils correspondent. et la connexion est considérée comme locale. De là, on récupère le informations nécessaires SANS contacter SQL Browser et se connecter au Instance SQL via la mémoire partagée sans aucun problème.
  • lorsque vous utilisez wstst05.capatest.local\sqlexpress, le code client ne réussit pas la comparaison du nom (wstst05.capatest.local) avec le netbios name (wstst05) et considère la connexion comme "distante". C'est par la conception et nous allons certainement envisager d'améliorer cela dans le futur. Quoi qu'il en soit, à cause de la connexion à distance et du fait qu’il s’agit d’une instance nommée, le client décide qu’il doit utiliser SQLBrowser pour la résolution de noms. Il tente de contacter SQL Browser sur wstst05.capatest.local (port UDP 1434) et apparemment cette partie échoue . D'où l'erreur que vous obtenez.

La raison pour laquelle le service "SQL Server Browser" de TechNet a été ajouté (souligné par moi): https://technet.Microsoft.com/en-us/library/ms181087(v=sql.120).aspx

Dans la section "Utilisation du navigateur SQL Server":

Si le service SQL Server Browser n'est pas en cours d'exécution, vous pouvez toujours pour vous connecter à SQL Server si vous fournissez le numéro de port correct ou pipe nommée. Par exemple, vous pouvez vous connecter à l'instance par défaut de SQL Server avec TCP/IP s'il fonctionne sur le port 1433. Cependant, if le service SQL Server Browser n'est pas en cours d'exécution, le suivant les connexions ne fonctionnent pas

  • Tout composant qui tente de se connecter à une instance nommée sans spécifier tous les paramètres (tels que le port TCP/IP ou le canal nommé Pipe)
  • Tout composant générant ou transmettant des informations serveur\instance pouvant ensuite être utilisé par d'autres composants pour se reconnecter. 
  • Connexion à une instance nommée sans fournir le numéro de port ni le canal. 
  • DAC vers une instance nommée ou l'instance par défaut si vous n'utilisez pas le port TCP/IP 1433. 
  • Le service de redirection OLAP. 
  • Énumération des serveurs dans SQL Server Management Studio, Enterprise Manager ou Query Analyzer. 

Si vous utilisez SQL Server dans un scénario client-serveur (par exemple, Lorsque votre application accède à SQL Server via un réseau), if vous arrêtez ou désactivez le service SQL Server Browser, vous devez affecter un numéro de port spécifique à chaque instance et écrivez votre client code d'application à toujours utiliser ce numéro de port. Cette approche a le problèmes suivants

  • Vous devez mettre à jour et gérer le code de l'application client pour vous assurer qu'il se connecte au port approprié. 
  • Le port que vous choisissez pour chaque instance peut être utilisé par un autre service ou application sur le serveur, ce qui provoque l'instance de SQL. Le serveur doit être indisponible.Et plus d'informations dans le même article de la section "Comment fonctionne le navigateur SQL Server":.

 

Because only one instance of SQL Server can use a port or pipe, different port numbers and pipe names are assigned for named instances, including SQL Server Express. By default, when enabled, both named instances and SQL Server Express are configured to use dynamic ports, that is, an available port is assigned when SQL Server starts. If you want, a specific port can be assigned to an instance of SQL Server. When connecting, clients can specify a specific port; but if the port is dynamically assigned, the port number can change anytime SQL Server is restarted, so the correct port number is unknown to the client. ... When SQL Server clients request SQL Server resources, the client network library sends a UDP message to the server using port 1434. SQL Server Browser responds with the TCP/IP port or named pipe of the requested instance. The network library on the client application then completes the connection by sending a request to the server using the port or named pipe of the desired instance

3
BateTech

Je préfère la méthode de "Rosdi Kasim" car cela ne nécessite pas de configuration détaillée sur IP.

Je l'oublierai certainement lorsque j'essaierai de mettre à niveau un autre serveur.

Keep It Simple Stupid (KISS) simplement en activant le service SQL Server Browser, puis ajoutez le\SQLEXPRESS derrière l’IP lorsque vous vous connectez au serveur.

L'utilisation directe d'IP sans "\ SQLEXPRESS" était mon point d'échec car elle n'utilisait pas le port par défaut.

Merci.

3
ALien

J'ai dû ajouter un port via Configuration Manager et ajouter le numéro de port dans ma connexion SQL [Hôte]\[nom d'instance de base de données], 1433

Notez le, (virgule) entre nominstance et port

2
C0r3yh

J'ai eu un problème différent de ce que toutes les réponses mentionnées jusqu'à présent!

Je devrais commencer par dire que je l'avais dans Visual Studio, et non pas SQL Server Express, mais que la solution devrait être exactement la même.

Eh bien, mon Dieu, c'est en fait très simple et peut-être un peu idiot. Lorsque j'ai essayé de créer une base de données et que Visual Studio m'a suggéré le nom du serveur SQL, il m'a donné mon nom d'utilisateur Windows et, puisqu'il s'agit en fait du nom du serveur, je l'ai choisi.

En réalité, c’était en fait mon nom d’utilisateur Windows + \SQLEXPRESS. Si vous n'avez pas modifié les paramètres, c'est probablement aussi le vôtre. Si cela fonctionne, arrêtez de lire; c'est ma réponse. Si cela ne fonctionne pas, le nom est peut-être différent.

Si, comme moi, vous avez uniquement rencontré ce problème dans Visual Studio pour vérifier quelle est la vôtre, procédez comme suit:

  1. Ouvrir SQL Server Management Studio icône.
  2. Si vous ne voyez pas votre serveur (ancré à gauche par défaut), appuyez sur F8 ou allez dans Affichage -> Explorateur d'objets .
  3. Faites un clic droit sur le nom du serveur et choisissez Propriétés (Le dernier élément)
  4. En bas à gauche, vous pouvez voir le nom actuel de votre serveur sous " Serveur " (pas Connexion, mais au-dessus).

C'est le nom du serveur et c'est à cela que vous devriez essayer de vous connecter! pas ce que suggère Visual Studio!

1
MasterMastic

Une dernière chose à vérifier est que vous avez orthographié l’instance nommée correctement!

Cet article est très utile pour résoudre les problèmes de connexion: Comment résoudre les problèmes de connexion au moteur de base de données SQL Server

1
Matt Burrell

Dans mon cas, la base de données fonctionnait sur un port non standard. Vérifiez que le port auquel vous vous connectez est identique à celui sur lequel la base de données est exécutée. S'il y a plus d'instances de serveur SQL, cochez la bonne.

1
Tomas Kubes

Vous rencontrez des problèmes de connexion à SQL Server? 

Essayez de déconnecter le pare-feu.

Si vous pouvez vous connecter avec un pare-feu déconnecté, il se peut que vous manquiez certaines règles d'entrée telles que "SQL Service Broker", ajoutez-les à votre pare-feu:

"CONNEXION ADMIN SQL" TCP PORT 1434 

"UDP ADMIN CONNECTION" PORT 1434 

"SERVICE D'ANALYSE SQL" TCP PORT 2383 

"SERVICE D'ANALYSE SQL BROWSE" TCP PORT 2382

"SQL DEBUGGER/RPC" TCP PORT 135 

"SQL SERVER" TCP PORT 1433 et autres si vous avez des ports dinamic 

"COURRIER DE SERVICE SQL" TCP PORT 4022

0
Pau Dominguez

Tout ce que vous avez à faire est d'ouvrir le port correspondant sur le pare-feu du serveur.

0
user1968210