Impossible de se connecter à SQl Server à partir de Linux
Je suis en train d'essayer de se connecter à SQL Server 2008 sur CentOS 5.8. Je suis avec unixODBC 2.3.0 et le Pilote ODBC de SQL Server (www.microsoft.com/en-us/download/details.aspx?id=28160).
Quand j'essaie de tester la connexion en cours d'exécution:
isql -v mydsn username password
il givens moi:
[S1T00][unixODBC][Microsoft][SQL Server Native Client 11.0]Login timeout expired
[08001][unixODBC][Microsoft][SQL Server Native Client 11.0]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.
[08001][unixODBC][Microsoft][SQL Server Native Client 11.0]TCP Provider: Error code 0x2726
[ISQL]ERROR: Could not SQLConnect
Le port est ouvert, le serveur est accessible.
J'ai été essayer de diagnostiquer le problème de plus, mais suis coincé ici:
strace -e trace=network isql -v mydsn username password
socket(PF_FILE, SOCK_STREAM, 0) = 3
connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"...}, 110) = -1 ENOENT (No such file or directory)
socket(PF_FILE, SOCK_STREAM, 0) = 3
connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"...}, 110) = -1 ENOENT (No such file or directory)
socket(PF_FILE, SOCK_STREAM, 0) = 3
connect(3, {sa_family=AF_FILE, path="/var/run/setrans/.setrans-unix"...}, 110) = 0
sendmsg(3, {msg_name(0)=NULL, msg_iov(5)=[{"\1\0\0\0", 4}, {"\1\0\0\0", 4}, {"\1\0\0\0", 4}, {"\0", 1}, {"\0", 1}], msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 14
socket(PF_FILE, SOCK_STREAM, 0) = 4
connect(4, {sa_family=AF_FILE, path="/var/run/nscd/socket"...}, 110) = -1 ENOENT (No such file or directory)
socket(PF_FILE, SOCK_STREAM, 0) = 4
connect(4, {sa_family=AF_FILE, path="/var/run/nscd/socket"...}, 110) = -1 ENOENT (No such file or directory)
socket(PF_INET, 0x80001 /* SOCK_??? */, IPPROTO_TCP) = -1 EINVAL (Invalid argument)
socket(PF_INET, 0x80001 /* SOCK_??? */, IPPROTO_TCP) = -1 EINVAL (Invalid argument)
socket(PF_INET, 0x80001 /* SOCK_??? */, IPPROTO_TCP) = -1 EINVAL (Invalid argument)
socket(PF_INET, 0x80001 /* SOCK_??? */, IPPROTO_TCP) = -1 EINVAL (Invalid argument)
socket(PF_INET, 0x80001 /* SOCK_??? */, IPPROTO_TCP) = -1 EINVAL (Invalid argument)
socket(PF_INET, 0x80001 /* SOCK_??? */, IPPROTO_TCP) = -1 EINVAL (Invalid argument)
socket(PF_INET, 0x80001 /* SOCK_??? */, IPPROTO_TCP) = -1 EINVAL (Invalid argument)
socket(PF_INET, 0x80001 /* SOCK_??? */, IPPROTO_TCP) = -1 EINVAL (Invalid argument)
socket(PF_INET, 0x80001 /* SOCK_??? */, IPPROTO_TCP) = -1 EINVAL (Invalid argument)
socket(PF_INET, 0x80001 /* SOCK_??? */, IPPROTO_TCP) = -1 EINVAL (Invalid argument)
socket(PF_INET, 0x80001 /* SOCK_??? */, IPPROTO_TCP) = -1 EINVAL (Invalid argument)
socket(PF_INET, 0x80001 /* SOCK_??? */, IPPROTO_TCP) = -1 EINVAL (Invalid argument)
socket(PF_INET, 0x80001 /* SOCK_??? */, IPPROTO_TCP) = -1 EINVAL (Invalid argument)
socket(PF_INET, 0x80001 /* SOCK_??? */, IPPROTO_TCP) = -1 EINVAL (Invalid argument)
socket(PF_INET, 0x80001 /* SOCK_??? */, IPPROTO_TCP) = -1 EINVAL (Invalid argument)
socket(PF_INET, 0x80001 /* SOCK_??? */, IPPROTO_TCP) = -1 EINVAL (Invalid argument)
socket(PF_INET, 0x80001 /* SOCK_??? */, IPPROTO_TCP) = -1 EINVAL (Invalid argument)
socket(PF_INET, 0x80001 /* SOCK_??? */, IPPROTO_TCP) = -1 EINVAL (Invalid argument)
Apparemment, il ya quelque chose de mal se passer avec l'établissement de la connexion.
Quelqu'un peut m'aider? S'il vous plaît laissez-moi savoir si vous avez besoin d'autres info.
Grâce
Êtes-vous sûr que c'est une instance par défaut et non une instance nommée? Avez-vous essayé de telnet au serveur sur le port 1433? Avez-vous essayé le nom du serveur ou adresse IP au lieu d'un simple DSN? Comment avez-vous vérifié que le port est ouvert et que le serveur est accessible? Ce port? Comment savez-vous qui est le port de droite? Des détails, des détails, des détails...
OriginalL'auteur kirylm | 2013-02-27
Vous devez vous connecter pour publier un commentaire.
Une "chasse aux sorcières' lorsque l'on travaille avec linux et la connexion odbc de Microsoft SQL Server lors de l'utilisation de Microsoft driver linux, est la chaîne de caractères dans odbc.ini pour le serveur doit contenir le port.
comme par http://msdn.microsoft.com/en-us/library/hh568455.aspx
C'est une convention différente que la plupart des autres configurations qui utilisent le
port = <portnumber>
convention. Si cela n'est pas configuré, vous verrez un "ne Peut pas SQLConnect' erreur.Également s'assurer que la bonne odbc les fichiers sont utilisés.
montrera configuré sources et de leurs emplacements.
Un autre gotcha, vous risquez de rencontrer plus tard, le pilote SQL Server ignore d'utilisateur et votre mot de passe dans odbc.ini si il est en texte brut, donc assurez-vous que votre application gère.
est-il une raison qu'ils ne changent pas le comportement de sorte qu'il fonctionne avec les instances nommées?
OriginalL'auteur ewm
Pour déboguer le problème, essayez les étapes suivantes:
IPAll
définir les propriétés de la dynamique des ports à vide et le port de1433
OriginalL'auteur marwin
Vous pouvez ouvrir la trace odbc et utiliser tcpdump pour attraper le paquet de réseau. Je pense que la trace odbc donnera une aide.
OriginalL'auteur Nan Xiao
Le problème est que j'ai été en utilisant EL6 pilote avec EL5. Après l'installation de la version correcte, tout a fonctionné. Merci de toute façon pour tout le monde que les réponses.
OriginalL'auteur kirylm