web-dev-qa-db-fra.com

Comment puis-je obtenir cette connexion SQL Server ODBC Connexion fonctionne?

Remarque: j'ai évidemment changé les noms de serveur et les adresses IP en noms fictifs.

Voici ce qui se passe. J'ai un serveur, que j'appelle MYSERVER, exécutant Microsoft SQL Server Express 2005. Sur ce serveur lui-même, j'ai une connexion ODBC configurée pointant sur lui-même, et cela fonctionne déjà parfaitement. Je me connecte en utilisant l'authentification SQL Server (pas l'authentification Windows), et c'est configuré comme ceci:

Image of good ODBC connection

Comme je l'ai dit, ça marche. Mais ensuite, j'ai un autre ordinateur qui est sur un domaine totalement différent/pas sur l'intranet, qui doit accéder à ce même serveur SQL hébergé sur MYSERVER. Parce que c'est sur un domaine différent, il ne reconnaît pas le nom "MYSERVER"; Je dois le pointer vers l'adresse IP de MYSERVER, qui sera, disons, 123.456.789.012. Mais la connexion ODBC ne semble pas fonctionner là-bas. J'ai essayé de la configurer comme ceci:

Image of bad ODBC connection

Ça ne marche pas. Lorsque je mets le nom d'utilisateur et le mot de passe et que j'appuie sur Suivant, il se bloque pendant 10 à 20 secondes, puis revient finalement avec l'erreur suivante:

Connection failed:
SQLState: '01000'
SQL Server Error: 1326
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).
Connection failed:
SQLState: '08001'
SQL Server Error: 17
[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied.

Si j'essaye la même chose, mais changez le "serveur" de 123.456.789.012\SQLEXPRESS à tout simplement vieux 123.456.789.012, J'obtiens une erreur différente:

Connection failed:
SQLState: '01000'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Invalid Instance()).
Connection failed:
SQLState: '08001'
SQL Server Error: 14
[Microsoft][ODBC SQL Server Driver][DBNETLIB]Invalid connection.

Maintenant je sais à quoi tu penses. Vous pensez peut-être, "duh, vous n'avez probablement pas ouvert le pare-feu pour le port 1433, factice." Sauf que je l'ai fait, et je l'ai vérifié, car je peux avec succès exécuter:

telnet 123.456.789.012 1433

... à partir de la ligne de commande, tout ce que je veux. Je ne sais donc pas quoi faire. Je sais que SQL Server existe, fonctionne et qu'une connexion ODBC peut être configurée correctement; je suis juste Je ne sais pas ce que je me suis trompé dans mes paramètres de connexion qui génère ces erreurs. Sur la base de la dernière erreur que j'ai répertoriée, il semblerait qu'il puisse se connecter au serveur, mais ne peut tout simplement pas trouver l'instance (car je n'ai pas spécifiez-en une à ce moment-là. Cela signifie-t-il que je dois simplement utiliser une syntaxe différente pour spécifier l'adresse IP avec un nom d'instance? Que dois-je faire? Merci d'avance.

30
soapergem

Les canaux nommés et les protocoles TCIP pour SQL Server 2005 sont désactivés par défaut. Les avez-vous activés sous "Gestionnaire de configuration du serveur SQL"? Vous pouvez trouver les protocoles dans la configuration du réseau SQL Server et dans la configuration xx du client SQL Native.

La connexion sur le serveur lui-même fonctionne grâce au protocole "Mémoire partagée".

18
Hakan Winther

Avez-vous activé le service SQL Server Browser selon Comment configurer SQL Server 2005 pour autoriser les connexions à distance ?:

Si vous exécutez SQL Server 2005 à l'aide d'un nom d'instance et que vous n'utilisez pas de numéro de port TCP/IP spécifique dans votre chaîne de connexion, vous devez activer le service SQL Server Browser pour autoriser les connexions à distance. Par exemple, SQL Server 2005 Express est installé avec un nom d'instance par défaut Computer Name\SQLEXPRESS.

5
Sim

Ce fil a corrigé le même message d'erreur lorsque j'utilisais Access pour me connecter à un serveur MSSQL 2008. MSSQL 2005 et versions antérieures ont bien fonctionné en utilisant simplement le nom de l'ordinateur dans la chaîne de connexion, mais j'ai dû passer à la chaîne de connexion dans Accès au formulaire complet lorsque l'instance a été mise à niveau vers 2008:

servername\instancename,portnumber

4
Mufasa

J'ai eu ce même problème et j'ai réussi à le résoudre en changeant également le pilote SQL en pilote SQL Native Client. C'était bizarre car dans mon cas, cela fonctionnait bien depuis des années, puis cessait de fonctionner. Je soupçonne que c'est quelque chose dans le sens où le pilote est corrompu, peut-être qu'une réinstallation de MDAC pourrait aider, mais pour le moment, je suis heureux que cela fonctionne du tout!

2
Mark Ribbans

Reconnaîtrait-il le nom du serveur s'il était pleinement qualifié? Si c'était MYSERVER.domain.com? Nous avons dû le faire avec SQL Server lors de la connexion à partir d'un domaine différent. Si vous pouvez obtenir le ODBC DSN système pour vous connecter lorsque vous testez la source de données, vous progressez. S'il ne se connecte pas dans le ODBC configuration, vous devez d'abord résoudre ce problème.

1
thursdaysgeek

Utilisez-vous des canaux nommés ou TCP sur la connexion ODBC qui fonctionne? TCP est-il activé)?

1
aNullValue

Assurez-vous que les connexions TCP à distance sont activées pour le serveur SQL.

1
Sam

J'ai également eu ce problème, et c'était aussi simple que cela: le serveur répertorié comme serveur DNS principal pour ce serveur a été supprimé, et l'application n'a plus été en mesure de résoudre correctement le nom du serveur SQL sur le réseau. Tout a immédiatement recommencé à fonctionner lorsque j'ai corrigé le serveur DNS local pour qu'il fonctionne.

0
yourcomputergenius

Juste un coup sauvage ici, mais que se passe-t-il si vous mettez une double barre oblique inverse avant le nom du serveur ou l'adresse IP? Il me semble que c'est normalement requis pour la plupart des autres connexions Windows/Microsoft.

0
John Gardeniers

Pour ce que ça vaut, j'ai commencé à obtenir cette erreur sur une connexion qui fonctionnait auparavant. Il s'est avéré que le service MSSQL $ SQLEXPRESS s'était en quelque sorte arrêté. Le redémarrer a résolu le problème.

0
dsteele

J'ai eu un problème similaire. Dans mon cas, un autre sw configure le paramètre ODBC donc je ne peux pas changer le pilote. J'ai résolu mon cas comme ceci:

  1. Définissez les paramètres TCP/IP pour que le serveur utilise le port 1433
  2. Sur le client, entrez l'adresse du serveur comme: 192.168.1.5,1433 (pas de nom d'instance)

Puis cela a commencé à fonctionner. Système d'exploitation client: pilote Win7 x64: sqlsrv32.dll

0
Mert Gülsoy