J'essaie d'exécuter la connexion à un serveur MSSQL à partir d'un serveur Web Ubuntu 12.04 avec FreeTDS et unixODBC.
En utilisant tsql, je peux me connecter au serveur avec
~$ tsql -S dbs3 -U <username> -P <password>
Pas de problème là-bas.
Cependant, lorsque j'essaie de me connecter avec isql, j'obtiens le message d'erreur suivant:
~$ isql -v database3 <username> <password>
[S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
[01000][unixODBC][FreeTDS][SQL Server]Unknown Host machine name.
[ISQL]ERROR: Could not SQLConnect
Mes fichiers de configuration sont les suivants:
odbc.ini
[database3]
Driver=FreeTDS
TDS_Version=8.0
Servername=dbs3
Port=1433
Database=benchmark_res
odbcinst.ini
[FreeTDS]
Description=FreeTDS v0.91
Driver=/usr/local/lib/libtdsodbc.so
Setup=/usr/local/lib/libtdsS.so
Trace=Yes
TraceFile=/tmp/freetds.log
ForceTrave=Yes
UsageCount=1
freetds.conf
# This file is installed by FreeTDS if no file by the same
# name is found in the installation directory.
#
# For information about the layout of this file and its settings,
# see the freetds.conf manpage "man freetds.conf".
# Global settings are overridden by those in a database
# server specific section
[global]
# TDS protocol version
; tds version = 4.2
# Whether to write a TDSDUMP file for diagnostic purposes
# (setting this to /tmp is insecure on a multi-user system)
; dump file = /tmp/freetds.log
; debug flags = 0xffff
# Command and connection timeouts
; timeout = 10
; connect timeout = 10
# If you get out-of-memory errors, it may mean that your client
# is trying to allocate a huge buffer for a TEXT field.
# Try setting 'text size' to a more reasonable limit
text size = 64512
# A typical Sybase server
[egServer50]
Host = symachine.domain.com
port = 5000
tds version = 5.0
# A typical Microsoft server
[egServer70]
Host = ntmachine.domain.com
port = 1433
tds version = 7.0
[dbs3]
Host = <server-ip>
port = 1433
tds version = 8.0
J'ai suivi le guide d'installation 1. ici et 2. ici
Pourquoi isql ne se connecte-t-il pas correctement?
Je suppose que l'erreur est super évidente mais je suis juste trop stupide pour la voir: D
Le problème était cette ligne dans odbc.ini
[database3] must be [dbs3] in your case.
Pour ceux qui ont également ce problème, vérifiez également le
ServerName = *Points to the name of the server configured in freetds.conf*
Si odbc ne trouve pas la source de données, cela signifie que vous fournissez la mauvaise
Vous essayez probablement de vous connecter à dbs3
qui échouera si vous ne l'avez pas dans odbc.ini
Vous devez vous connecter à [database3]
pour ODBC
isql -v database3 <username> <password>
J'ai eu le même problème, j'ai découvert que vous devez exécuter ce qui suit après chaque modification de odbc.ini
:
odbcinst -i -s -f /etc/odbc.ini
Après cela, testé ceci:
isql -v SERVER USER PWD
et j'ai obtenu cette sortie:
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>