2009-03-18 4 views
0

Nous avons deux instances SQL Server dans notre bureau principal et une sur notre serveur Web colocalisé. Il existe quelques réplications qui gèrent l'échange de données entre le serveur Web et les serveurs du bureau principal.Pourquoi puis-je me connecter à une instance SQL Server 2005 à l'aide de sqlcmd mais pas de SSMS après une modification IP?

Nous avons changé de FAI aujourd'hui à notre siège social. Nous avons fait nos devoirs et étions prêts pour le changement (ips dans les dossiers d'hôtes changés, etc ...) Dès que nous sommes passés à la nouvelle connexion, toutes les réplications ont complètement cassé. J'ai essayé de me connecter aux serveurs de notre bureau principal en utilisant SSMS; pas de cookie. Nous pouvons faire un ping et ftp à nos serveurs de bureau à la maison juste en utilisant les noms de serveur de notre serveur Web. J'ai vu que les ports 1433 et 1434 étaient bloqués par le nouveau fournisseur d'accès Internet, et notifié les personnes appropriées; ils devraient être débloqués maintenant. Toujours pas de dés de SMSS. J'ai ensuite essayé de me connecter avec sqlcmd, qui a fonctionné de manière étonnante. SMSS ne se connectera pas au serveur, mais sqlcmd le fera. Pourquoi est-ce? Tout a fonctionné comme un charme avant le commutateur ISP.

Exemple

 
ping homeserver 
    success! 
ftp homeserver 
    success! 
sqlcmd -S homeserver\instance -U user -P pass 
    success! 
- Trying to connect using SSMS, using the same homeserver\instance and user/pass combo 
    Provider: SQL Network Interfaces, error: 26 - Error locating server/instance specified) 
+0

Il s'avère que notre ISP idiot avait 1434 bloqué./facepalm –

Répondre

1

SQL N'écoute pas sur TCP 1434, il écoute UDP 1434. Vous ne pouvez pas tester les ports UDP avec telnet. Demandez à votre FAI d'ouvrir UDP 1434.

Vérifiez l'ordre de connexion du client sur le serveur, et j'obtiendrai que les canaux nommés sont au-dessus de TCP/IP, mais SSMS n'utilise pas de canaux nommés pour une raison quelconque. Si vous utilisez des instances nommées, assurez-vous que SQL Server dispose de tous les ports TCP que vous utilisez entre le bureau et le bureau.

Vous voudrez peut-être envisager de configurer un VPN entre le bureau et le colo afin de ne pas avoir à vous soucier des pare-feu entre les deux.

+0

+1 Merci de m'avoir éduqué et d'avoir offert la suggestion de VPN. Comme je l'ai dit dans mon commentaire, ils bloquaient le port, mais nous avons réglé les choses et la réplication est maintenant forte. Je vais aller de l'avant et vous donner la réponse puisque c'était le problème, même si cela a été résolu depuis une semaine maintenant. –

0

L'instance doit être: homeserver \ instance (barre oblique inverse plutôt que slash)

+0

Désolé, ce fut une faute de frappe. J'utilise \ quand j'essaie réellement ce genre de choses. –

+0

Avez-vous essayé de telnet sur le port 1433/34 pour être sûr que ces ports sont débloqués maintenant. – Henryk

+0

Ouais, c'est ainsi que j'ai compris qu'ils étaient bloqués en premier lieu.1433 Je pourrais confirmer, mais 1434 je ne pouvais pas obtenir une connexion sur même d'une machine LAN, de sorte que je ne suis pas encore sûr, mais je pense que c'est bien basé sur combien plus vite il échoue maintenant par rapport à avant . –

0

Un peu d'une supposition, mais SQL ont différentes options pour les protocoles de réseau, y compris la mémoire partagée, TCP/IP, les canaux nommés et VIA. Vous pouvez définir la configuration pour le serveur et les clients (sur les machines appropriées) à l'aide de SQL Server Configuration Manager. Le client natif utilisera souvent des canaux nommés, qui souvent ne fonctionneront pas sur un WAN car (je pense) il utilise des diffusions pour la résolution de noms (et peut nécessiter plus de ports ouverts). Ainsi, si SSMS essaye de se connecter via Named Pipes, il peut ne pas être capable de résoudre le nom du serveur, alors que si sqlcmd utilise TCP/IP, il pourra le faire.

En d'autres termes, le premier endroit que je chercherais serait dans SQL Server Configuration Manager sur le serveur et le client. Essayez de désactiver tout autre que TCP/IP ou modifiez l'ordre du fournisseur afin que TCP/IP soit en haut. Vous pouvez laisser la mémoire partagée directement en haut et activée si vous le souhaitez, elle est pratique pour les connexions de la machine locale.

+0

Bonne estimation, mais j'ai déjà essayé cela aussi. J'ai lu quelque part que vous pouvez utiliser TCP: serveur \ instance aussi bien pour le forcer à un protocole, ainsi. L'ordre sur le client et le serveur est comme vous le dites, SM, TCPIP, NP. –

0

Vous pouvez également activer le service de navigateur SQL sur votre serveur, ce qui vous permet de voir le nom de l'instance de serveur.

Questions connexes