Utilisez SQL Server Management Studio pour vous connecter à distance à une instance SQL Server Express hébergée sur une Machine virtuelle Azure

Tentative Initiale

J'ai une machine virtuelle Azure avec Windows Server 2012, sur laquelle je viens d'installer le composant SQL Server 2012 Express Database Engine. Ensuite, j'ai suivi les instructions ici {[4] } pour me connecter à distance avec SQL Server Management Studio.

  1. Créer un point de terminaison TCP pour la machine virtuelle
  2. Ouvrez les ports TCP dans le pare-feu Windows
  3. configurez SQL Server pour écouter sur le protocole TCP
  4. configurer SQL Server pour le mode mixte authentification
  5. créer des connexions D'authentification SQL Server
  6. détermine le nom DNS de la machine virtuelle
  7. Se connecter au moteur de base de données à partir d'un autre ordinateur

Après la septième étape, j'ai reçu l'erreur suivante:

Une erreur liée au réseau ou spécifique à une instance s'est produite 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 Le serveur est configuré pour autoriser les connexions distantes. (fournisseur: Nom Fournisseur Pipes, erreur: 40-impossible d'ouvrir une connexion à SQL Server) (Microsoft SQL Server, erreur: 53)

Que dois-je configurer avant de me connecter à distance?

Dépannage

J'ai suivi les instructions de dépannage ici. Chaque blockquote ci-dessous est une étape décrite que ce lien.

Confirmez l'instance du moteur de base de données SQL Server est installé et en cours d'exécution.

Fait. Nous avons installé SQL Server Express, et il fonctionne comme une instance nommée appelée SQLEXPRESS.

Si vous tentez de vous connecter à une instance nommée, Le service de navigateur SQL Server est en cours d'exécution.

Fait. Nous avons suivi les étapes ici pour activer le service de navigateur SQL Server.

Récupère l'adresse IP de l'ordinateur.

Fait. Nous les utiliserons plus tard pour les tests connectivité et peut-être pour configurer un port statique pour SQLEXPRESS.

10.241.62.155

Fe80:: 45c: 8c29: e19f: f78b % 15

Récupère le numéro de port TCP utilisé par SQL Server.

Fait. Les journaux du serveurSQL Server Management Studio montraient que le serveur écoutait sur le port 49169.

Activer Les Protocoles

Fait. Nous avions déjà activé TCP / IP dans le gestionnaire de configuration, mais nous avons redémarré le service SQL Server juste en cas.

Test de la connectivité TCP/IP

Fait. Nous avons utilisé tcping.exe pour tester la connectivité (le ping cmd ne fonctionne pas rapidement avec Azure.) Nous avons pu nous connecter au port 80.

  • tcping.exe buddha.cloudapp.net > succès
  • tcping.exe buddha.cloudapp.net 80 > succès

Tester une connexion locale

Fait. Nous avons utilisé sqlcmd.exe à partir de l'invite de commande et ont pu se connecter localement via TCP avec un nom d'utilisateur et mot de passe.

  • sqlcmd-s Buddha SQLEXPRESS (succès via le protocole de mémoire partagée)
  • sqlcmd-s tcp: Bouddha SQLEXPRESS (succès via TCP)
  • sqlcmd-s tcp: Bouddha SQLEXPRESS-U sa-P (succès via TCP avec nom d'utilisateur)
  • sqlcmd-s tcp: 10.241.62.155SQLEXPRESS-U sa-P (succès avec IP interne)

Ouverture d'un Port dans le pare-feu

Nous avons ouvert le port sur lequel SQLEXPRESS écoute. Les journaux du serveur (ci-dessus) ont montré que SQLEXPRESS écoutait sur le port 49169, mais ce n'est qu'un des nombreux ports dynamiques, et nous voulions mettre en place le port statique 1435.

  • Utilisez WF.msc pour créer une règle TCP entrante pour le port 1435.
  • utilisez Azure Management Portal pour créer un point de terminaison TCP pour le port 1435.

Les instructions de dépannage indiquent également:

Si vous vous connectez à une instancenommée ou à un port autre que TCP port 1433, vous devez également ouvrir le port UDP 1434 pour le serveur SQL Service de navigateur.

Puisque nous connectons SQLEXPRESS (une instance nommée), nous devions ouvrir le port 1434 pour UDP.

  • Utilisez WF.msc pour créer une règle entrante UCP pour le port 1434.
  • utilisez Azure Management Portal pour créer un point de terminaison UDP pour le port 1434

D'autres recherches sur la connexion aux instances nommées ont révélé des problèmes de port dynamique. La raison pour laquelle nous utilisons le port 1435 (statique) au lieu de port 49169 (l'une des nombreuses options efficaces.)

Instances de SQL Server Express, SQL Server Compact et named les instances du moteur de base de données utilisent des ports dynamiques. Pour configurer ces instances pour utiliser un port spécifique, voir configurer un serveur pour écouter un Port TCP spécifique (SQL Server Configuration Manager). et ici.

Fait. Nous sommes allés à sql Configuration Manager > Configuration réseau SQL Server > protocoles pour SQLEXPRESS > TCP / IP, nous avons fait le suivre.

Onglet Protocole > écouter tout > non.

Onglet Adresses IP > pour chaque adresse répertoriée

  • Activé > Oui
  • Ports dynamiques TCP > Blanc (supprimer le zéro)
  • port TCP > 1435 (ou votre choix)

Après avoir redémarré le service SQLEXPRESS, nous avons de nouveau regardé dans les journaux de SQL Server Management Studio et avons constaté que le serveur écoutait sur le port 1435!!! Hourra!

Tester la connexion

Fait. Nous ouvert SQL Server Management Studio sur notre ordinateur local (Non Azure) et connecté.

  • buddha.cloudapp.net,1435 ou Bouddha. cloudapp. net SQLEXPRESS
  • sa
  • mot de passe

Succès.

51
demandé sur Shaun Luttin 2013-04-11 22:46:12

3 réponses

Voici les trois pages web sur lesquelles nous avons trouvé la réponse. La partie la plus difficile a été la mise en place de ports statiques pour SQLEXPRESS.

Provisionnement D'une machine virtuelle SQL Server sous Windows Azure . Ces instructions initiales ont fourni 25% de la réponse.

Comment résoudre les problèmes de connexion au moteur de base de données SQL Server . La lecture attentivement fourni un autre 50% de la réponse.

Comment configurer SQL server pour écouter sur différents ports sur différentes adresses IP?. Cela a permis de configurer des ports statiques pour les instances nommées (par exemple SQLEXPRESS.) Il nous a fallu le dernier 25% du chemin de la réponse.

15
répondu Shaun Luttin 2013-04-11 23:25:18

Le fait que vous obteniez une erreur du fournisseur Names Pipes nous indique que vous n'utilisez pas le protocole TCP/IP lorsque vous essayez d'établir la connexion. Essayez d'ajouter le préfixe " tcp " et spécifiez le numéro de port:

tcp:name.cloudapp.net,1433
14
répondu Paul Keister 2013-04-11 19:22:36

Moi aussi, j'ai eu du mal avec quelque chose de similaire. Je suppose que votre problème réel est la connexion à une instance SQL Express s'exécutant sur une machine différente. Les étapes peuvent être résumées comme suit:

  1. Assurez-vous que SQL Express est configuré pour L'authentification SQL ainsi que pour L'authentification Windows (par défaut). Vous le faites via SQL Server Management Studio (SSMS) Propriétés du serveur / sécurité
  2. dans SSMS créer un nouveau login appelé "sqlUser", disons, avec un mot de passe approprié, " sql", dire. Assurez-vous que cette nouvelle connexion est définie pour L'authentification SQL, pas pour L'authentification Windows. Sécurité du serveur SSMS / connexions / Propriétés / Général. Assurez-vous également que" appliquer la stratégie de mot de passe " n'est pas cochée
  3. sous Propriétés / rôles de serveur, Assurez-vous que ce nouvel utilisateur a le rôle "sysadmin"
  4. dans SQL Server Configuration Manager SSCM (recherchez SQLServerManagerxx.fichier msc dans Windows \ SysWOW64 si vous ne trouvez pas SSCM) sous SQL Server Network Configuration / Protocols for SQLExpress assurez-vous que TCP / IP est activé. Vous pouvez désactiver les tuyaux nommés si vous voulez
  5. Cliquez avec le bouton droit sur protocole TCP / IP et dans L'onglet Adresses IP, assurez-vous que chacune des adresses IP est définie sur Activé Oui, et le port TCP 1433 (c'est le port par défaut pour SQL Server)
  6. dans le pare-feu Windows (WF.MSC) créez deux nouvelles règles entrantes - une pour SQL Server et une autre pour SQL Browser Service. Pour SQL Server, vous devez ouvrir le Port TCP 1433 (si vous utilisez le port par défaut pour SQL Server) et très important pour le navigateur SQL Service vous devez ouvrir le Port UDP 1434 . Nommez ces deux règles de manière appropriée dans votre pare-feu
  7. arrêtez et redémarrez le service SQL Server en utilisant SSCM ou les Services.msc composant logiciel enfichable
  8. dans les Services.composant logiciel enfichable MSC assurez-vous que le type de démarrage du service SQL Browser est automatique, puis démarrez ce service

À ce stade, vous devriez être en mesure de se connecter à distance, en utilisant L'authentification SQL, l'utilisateur "sqlUser" mot de passe "sql" à L'instance SQL Express configurée comme ci-dessus. Un dernier conseil et facile de vérifier cela est de créer un fichier texte vide avec le .Extension UDL, dites " Test.UDL " sur votre bureau. Un double-clic pour modifier ce fichier appelle la boîte de dialogue Propriétés de Microsoft Data Link avec laquelle vous pouvez tester rapidement votre connexion SQL distante

2
répondu JohnB 2017-07-21 07:39:26