Activer les connexions distantes 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 à partir de mon PC de bureau, et d'obtenir à plusieurs reprises l'erreur bien connue:
Une erreur liée au réseau ou spécifique à une instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur n'a pas été trouvé ou n'est pas accessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions distantes. (fournisseur: fournisseur de tuyaux nommé, erreur: 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 de pare-feu Windows sur le serveur pour TCP, les ports 1433 et 1434 sur le sous-réseau local.
- vérifiez que j'ai une connexion sur L'instance SQL Server pour l'utilisateur que je suis connecté comme sur le bureau.
- vérifiez que j'utilise L'authentification Windows sur le serveur SQL instance.
- redémarrez à plusieurs reprises SQL Server et l'ensemble du serveur dang.
- retire tous mes cheveux.
Comment puis-je obtenir SQL Server 2012 Express pour autoriser les connexions distantes!?
16 réponses
Eh bien, Content d'avoir demandé . La solution que j'ai finalement découverte était ici:
- exécutez SQL Server Configuration Manager.
- allez dans Configuration réseau SQL Server > protocoles pour SQLEXPRESS.
- assurez-vous que TCP / IP est activé.
Jusqu'à présent, tout va bien, et tout à fait attendu. Mais alors:
- faites un clic droit sur TCP / IP et sélectionnez Propriétés.
- vérifiez que, sous IP2, L'adresse IP est définie sur l'adresse IP de l'ordinateur sur le sous-réseau local.
- Faites défiler Jusqu'à IPAll.
- assurez-vous que Ports TCP Dynamiques est vide. (Le mien était réglé sur un numéro de port à 5 chiffres.)
- assurez-vous que Port TCP est défini à 1433. (Le mien était vide.)
(en outre, si vous suivez ces étapes, il est pas nécessaire pour activer le navigateur SQL Server, et vous devez seulement autoriser le port 1433, pas 1434.)
Ces cinq étapes supplémentaires sont quelque chose que je ne me souviens pas avoir jamais eu à faire 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. Voir ici:
Configurer un serveur pour écouter sur un Port TCP spécifique (SQL Server Configuration Manager)
La bonne façon de se connecter à SQL Server distant (sans ouvrir le port UDP 1434 et activer le navigateur SQL Server) {[2] } consiste à utiliser ip et port au lieu de instance nommée.
L'utilisation d'ip et de port au lieu d'une 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)..
Ceci la méthode nécessite l'ouverture du port UDP 1434 et L'exécution du navigateur SQL Server..
Encore Une Chose...
Kyralessa fournit d'excellentes informations, mais j'ai une autre chose à ajouter où j'ai été perplexe même après cet article.
Sous Configuration réseau SQL Server > protocoles pour Serveur > TCP / IP activé. Faites un clic droit sur TCP / IP et choisissez Propriétés. Sous les adresses IP, vous devez définir activé sur Oui pour chaque type de connexion que vous utilisez.
Vous pouvez l'utiliser pour résoudre ce problème:
Allez dans Démarrer > Exécuter, et exécutez CLICONFG.EXE.
Le protocole Pipes nommé sera le premier dans la liste.Rétrograder, et promouvoir TCP / IP.
Testez l'application à fond.
J'espère que cette aide.
Vous pouvez également définir
Écoutez tous NO
Dans la boîte de dialogue de protocole puis dans l'adresse IP IP1 (disons)
Définir activé sur Oui,
Définir l'adresse IP yr,
Définit TCP Dynamic sur vide et
Port TCP vers 1433 (ou autre)
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 sur TCP / IP - > onglet adresses IP
- tout reste par défaut, définissez uniquement le Port IPAll: TCP sur 1433
Peut se connecter avec SQL Server Manager à la machine: [hostaddress], 1433
Exemple:
Cet article m'a aidé...
Comment activer les connexions distantes dans SQL Server
Tout dans SQL Server a été configuré, mon problème était que le pare-feu bloquait le port 1433
Lors de mon installation de SQL Server 2012 Developer Edition, installé avec les paramètres par défaut, j'ai juste dû charger le Gestionnaire de Configuration SQL Server -> Configuration réseau SQL Server -> protocoles pour MSSQLSERVER et changer TCP/IP de Désactivé à Activé.
J'ai dû ajouter une règle de port entrant de pare-feu pour ouvrir le port UDP 1434. C'est celui que le navigateur Sql Server écoute.
Je préfère le moyen de "Rosdi Kasim" car cela ne nécessite pas de configuration détaillée sur L'IP.
Je vais certainement l'oublier à nouveau quand j'essaierai de remonter un autre serveur.
Keep It Simple Stupid (KISS) en activant simplement le service de navigateur Sql Server, puis ajoutez le \ SQLEXPRESS derrière L'adresse IP lorsque vous connectez le serveur.
L'utilisation directe D'IP sans "\ SQLEXPRESS " était mon point d'échec car il n'utilise pas le port par défaut.
Merci.
J'ai eu le même problème avec SQL Server 2014 installé localement instance nommée. La connexion à l'aide du FQDN\InstanceName
échouerait, alors que la connexion en utilisant uniquement Mon hostname\InstanceName
fonctionnait. Par exemple: la connexion à l'aide de mycomputername\sql2014
a fonctionné, mais l'utilisation de mycomputername.mydomain.org\sql2014
n'a pas fonctionné. DNS résolu correctement, TCP / IP a été activé dans SQL Configuration Manager, des règles de pare-feu Windows ont été ajoutées (puis désactivées pour tester le pare-feu afin de s'assurer qu'il ne bloquait rien), mais aucun d'entre eux n'a résolu le problème.
Finalement, je devais démarrez le service "SQL Server Browser " sur le serveur SQL et cela a résolu le problème de connectivité.
Je n'avais jamais réalisé que le service de navigateur SQL Server aidait réellement le serveur SQL à établir des connexions; j'avais l'impression qu'il aidait simplement à remplir les listes déroulantes lorsque vous cliquiez sur "Rechercher plus" de serveurs à connecter, mais cela aide à aligner les demandes des clients avec le port # correct à utiliser, si le port # les liaisons de site web aident à résoudre le même problème sur un serveur web IIS qui héberge plusieurs sites Web).
Cet élément de connexion est ce qui m'a donné l'indice sur le service de navigateur SQL Server: https://connect.microsoft.com/SQLServer/feedback/details/589901/unable-to-connect-on-localhost-using-fqdn-machine-name
- 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 wstst05 est comparer contre le nom netbios. Je ne vois aucun problème pour eux de correspondre et la connexion est considérée comme locale. À partir de là, nous récupérons les 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 échoue à la comparaison du nom (wstst05.capatest.locale) à l' nom netbios (wstst05) et considère la connexion "à distance". C'est de par leur conception et nous allons certainement envisager d'améliorer cela dans le avenir. Quoi qu'il en soit, en raison de considérer la connexion à distance et le fait qu'il est une instance nommée, le client décide qu'il doit utiliser SQLBrowser pour la résolution des noms. Il tente de contacter le navigateur SQL sur wstst05.capatest.local (port UDP 1434) et apparemment cette partie échoue. D'où l'erreur que vous obtenez.
La raison du service "SQL Server Browser" de TechNet (soulignement ajouté 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 de navigateur SQL Server 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 canal nommé. Par exemple, vous pouvez vous connecter à l'instance par défaut de SQL Server avec TCP / IP s'il s'exécute sur le port 1433. Cependant, Si le service de navigateur SQL Server n'est pas en cours suivant les connexions ne fonctionnent pas:
- tout composant qui tente de se connecter à une instance nommée sans spécifier complètement tous les paramètres (tels que le port TCP/IP tuyau) .
- tout composant qui génère ou transmet des informations server \ instance qui pourraient ensuite être utilisées par d'autres composants pour se reconnecter.
- connexion à une instance nommée sans fournir le numéro de port ou pipe.
- DAC à un nom instance ou l'instance par défaut si vous n'utilisez pas le port TCP / IP 1433.
- le service de redirection OLAP.
- énumérer les 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 sur un réseau), Si vous arrêtez ou désactivez le service de navigateur SQL Server, vous devez numéro de port spécifique à chaque instance et écrivez votre client code d'application pour toujours utiliser ce numéro de port. Cette approche a l' problèmes suivants :
- Vous devez mettre à jour et maintenir 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, provoquant L'instance de SQL Le serveur sera indisponible.
Et plus d'informations du même article du " comment SQL Le navigateur du serveur fonctionne " section:
Parce que une seule instance de SQL Server peut utiliser un port ou un tuyau, différents numéros de port et noms de tuyau sont attribués pour named instances, y compris SQL Server Express. Par défaut, lorsque activée, les instances nommées et SQL Server Express sont configurées pour utilisez des ports dynamiques, c'est-à-dire qu'un port disponible est affecté lorsque SQL Le serveur démarre. Si vous le souhaitez, un port spécifique peut être affecté à un instance de SQL Server. Lorsque connexion, les clients peuvent spécifier un port spécifique; mais si le port est attribuée dynamiquement, le port nombre peut changer à tout moment SQL Server est redémarré, de sorte que le port correct le numéro est inconnu du client. ... Lorsque les clients SQL Server demandent Ressources SQL Server, la bibliothèque réseau client envoie un message UDP au serveur en utilisant le port 1434. Navigateur SQL Server répond avec le Port TCP / IP ou canal nommé de l'instance demandée. Réseau bibliothèque sur l'application cliente puis termine la connexion par envoi d'une requête au serveur à l'aide du port ou du canal nommé instance souhaitée
J'ai dû ajouter un port via le Gestionnaire de Configuration et ajouter le numéro de port dans ma connexion sql [hôte]\[nom de l'instance db],1433
Notez le, (virgule) entre instancename et port
J'ai eu un problème différent de ce que toutes les réponses mentionnées jusqu'ici!
Je devrais commencer par dire que je l'avais dans Visual Studio, et non dans SQL Server Express mais que la solution devrait être exactement la même.
Eh bien, mon Dieu, c'est vraiment très simple et peut-être un peu stupide. Quand j'ai essayé de créer une base de données et Visual Studio a suggéré le nom du serveur SQL il m'a donné mon nom D'utilisateur Windows et puisque c'est en fait le nom du serveur que je suis allé chercher il.
En réalité il était mon nom d'utilisateur Windows + \SQLEXPRESS
. Si vous n'avez pas modifié les paramètres c'est probablement la vôtre aussi. Si cela fonctionne, arrêtez de lire; c'est ma réponse. Si cela ne fonctionne pas, peut-être que le nom est différent.
Si, comme moi, vous avez seulement eu ce problème dans Visual Studio pour vérifier ce qui est le vôtre, suivez ces étapes:
- Ouvrir SQL Server Management Studioicône.
- Si vous ne voyez pas votre serveur (ancré à gauche par par défaut) appuyez sur F8 ou aller à Afficher -> Explorateur d'Objets.
- faites un clic droit sur le nom du serveur et choisissez Properties (le dernier élément)
- en bas à gauche, vous pouvez voir le nom réel de votre serveur sous " Server" (Pas de connexion, mais au-dessus).
C'est le nom du serveur et c'est ce que vous tentez de vous connecter à! pas ce que propose Visual Studio!
Dans mon cas, la base de données fonctionnait sur un port non standard. Vérifiez que le port que vous connectez est le même que le port sur lequel la base de données s'exécute. S'il y a plus d'instances de SQL server, vérifiez la bonne.
Tout ce que vous devez faire est d'ouvrir le port sur le pare-feu du serveur.
Une autre chose à vérifier est que vous avez correctement orthographié l'instance nommée!
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