web-dev-qa-db-fra.com

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 un Azure VM avec Windows Server 2012, sur lequel je viens d'installer le composant du moteur de base de données SQL Server 2012 Express. Ensuite, j'ai suivi les instructions ici pour vous connecter. à distance avec SQL Server Management Studio.

  1. Créer un noeud final TCP pour la machine virtuelle)
  2. Open TCP ports du pare-feu Windows
  3. Configurez SQL Server pour écouter sur le protocole TCP
  4. Configurer SQL Server pour l'authentification en mode mixte
  5. Créer des connexions d'authentification SQL Server
  6. Déterminer 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 à 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) (Microsoft SQL Server, erreur: 53)

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

Dépannage

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

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

Terminé. Nous avons installé SQL Server Express et il s'exécute sous une instance nommée appelée SQLEXPRESS.

Si vous essayez de vous connecter à une instance nommée, assurez-vous que le service SQL Server Browser est en cours d'exécution.

Terminé. Nous avons suivi les étapes ici pour activer le service SQL Server Browser.

Obtenez l'adresse IP de l'ordinateur.

Terminé. Nous les utiliserons plus tard pour tester la connectivité et peut-être pour configurer un port statique pour SQLEXPRESS.

10.241.62.155

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

Obtenez le TCP numéro de port utilisé par SQL Server.

Terminé. Les journaux du serveur SQL Server Management Studio indiquaient que le serveur était à l'écoute sur le port 49169.

Activer les protocoles

Terminé. Nous avions déjà activé TCP/IP dans le gestionnaire de configuration, mais nous avons redémarré le service SQL Server au cas où.

Test de la connectivité TCP/IP

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

  • tcping.exe buddha.cloudapp.net> réussi
  • tcping.exe buddha.cloudapp.net 80> réussi

Tester une connexion locale

Terminé. Nous avons utilisé sqlcmd.exe à partir de la commande Invite et nous avons pu nous connecter localement via TCP avec un nom d'utilisateur et un mot de passe.

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

Ouverture d'un port dans le pare-feu

Nous avons ouvert le port sur lequel nous écoutons SQLEXPRESS. Les journaux du serveur (ci-dessus) ont montré que SQLEXPRESS était à l'écoute sur le port 49169, mais il ne s'agit que de l'un des nombreux ports dynamiques. Nous avons donc souhaité configurer le port statique 1435.

  • Utilisez WF.msc pour créer une règle entrante TCP pour le port 1435.
  • Utilisez Azure Management Portal pour créer un noeud final TCP pour le port 1435.

Les instructions de dépannage indiquent également:

Si vous vous connectez à une instance nommée ou à un port autre que TCP port 1433, vous devez également ouvrir le Port UDP 1434 pour le service SQL Server Browser.

Comme 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.

Des recherches supplémentaires sur la connexion à des instances nommées ont révélé des problèmes de ports dynamiques. La raison pour laquelle nous utilisons le port 1435 (statique) au lieu du port 49169 (une des nombreuses options efficaces).

Les instances de SQL Server Express, SQL Server Compact et les instances nommées du moteur de base de données utilisent des ports dynamiques. Pour configurer ces instances afin qu'elles utilisent un port spécifique, voir Configurer un serveur pour qu'il écoute sur un port spécifique TCP (gestionnaire de configuration SQL Server). et ici .

Terminé. Nous sommes allés dans Gestionnaire de configuration SQL> Configuration réseau SQL Server> Protocoles pour SQLEXPRESS> TCP/IP, nous avons procédé comme suit.

Onglet Protocole> Tout écouter> NO.

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

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

Après avoir redémarré le service SQLEXPRESS, nous avons de nouveau consulté les journaux de SQL Server Management Studio et constaté que le serveur était à l’écoute sur le port 1435! Hourra!

Tester la connexion

Terminé. Nous avons ouvert SQL Server Management Studio sur notre ordinateur local (non Azure) et connecté.

  • buddha.cloudapp.net, 1435 OR buddha.cloudapp.net\SQLEXPRESS
  • sa
  • mot de passe

Succès.

54
Shaun Luttin

Voici les trois pages Web sur lesquelles nous avons trouvé la réponse. La partie la plus difficile a été de configurer des ports statiques pour SQLEXPRESS.

Approvisionnement 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 . En lisant cela attentivement, nous avons obtenu 50% de la réponse.

Comment configurer le serveur SQL pour écouter sur différents ports sur différentes adresses IP? . Cela permettait de configurer des ports statiques pour des instances nommées (par exemple, SQLEXPRESS.). Cela nous a pris 25% du chemin final pour obtenir la réponse.

18
Shaun Luttin

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 de spécifier le numéro de port:

tcp:name.cloudapp.net,1433
14
Paul Keister

Moi aussi j'ai eu du mal avec quelque chose de similaire. Je suppose que votre problème actuel est de vous connecter à une instance SQL Express s'exécutant sur un ordinateur différent. Les étapes à suivre peuvent être résumées comme suit:

  1. Assurez-vous que SQL Express est configuré pour l'authentification SQL et l'authentification Windows (par défaut). Vous faites cela via Propriétés/Sécurité du serveur SQL Server Management Studio (SSMS)
  2. Dans SSMS, créez un nouvel identifiant appelé "sqlUser", avec un mot de passe approprié, "sql", par exemple. 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 l'option "Appliquer la politique de mot de passe" est désactivée.
  3. Sous Propriétés/Rôles du serveur, assurez-vous que ce nouvel utilisateur a le rôle "sysadmin".
  4. Dans SSCM de SQL Server Configuration Manager (recherchez le fichier SQLServerManagerxx.msc dans Windows\SysWOW64 si vous ne trouvez pas SSCM) sous Configuration/protocoles réseau SQL Server pour SQLExpress, assurez-vous que le protocole TCP/IP est activé. Vous pouvez désactiver les canaux nommés si vous le souhaitez
  5. Cliquez avec le bouton droit sur le protocole TCP/IP et sur l'onglet IPAddresses, assurez-vous que chacune des adresses IP est définie sur Enabled Oui et TCP Port 1433 (il s'agit du 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 le service SQL Browser. Pour SQL Server, vous devez ouvrir TCP le port 1433 (si vous utilisez le port par défaut pour SQL Server) et, ce qui est très important, pour le service SQL Browser dont vous avez besoin. pour 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 à l'aide de SSCM ou du composant logiciel enfichable Services.msc.
  8. Dans le composant logiciel enfichable Services.msc, assurez-vous que Type de démarrage du service Navigateur SQL est Automatique, puis démarrez ce service.

À ce stade, vous devriez pouvoir vous connecter à distance, à l'aide de l'authentification SQL, de l'utilisateur "sqlUser", du mot de passe "sql" à l'instance SQL Express configurée comme ci-dessus. Un dernier conseil et un moyen simple de vérifier cela consiste à créer un fichier texte vide avec l’extension .UDL, dites "Test.UDL" sur votre bureau. Double-cliquer pour éditer ce fichier appelle la boîte de dialogue Propriétés de Microsoft Data Link avec laquelle vous pouvez rapidement tester votre connexion SQL distante.

3
JohnB