tdsodbc php sql-server sql-server-2005 freetds unixodbc

tdsodbc - Error "El servidor Adaptive no está disponible o no existe" al conectarse a SQL Server desde PHP



freetds ubuntu 17 (7)

Estoy intentando conectarme a una base de datos de SQL Server 2005 desde mi Mac usando unixODBC y FreeTDS como se describe here . Sin embargo, cuando intento conectarme a una base de datos diferente utilizando la misma configuración, obtengo:

Connection Failed:[FreeTDS][SQL Server]Unable to connect: Adaptive Server is unavailable or does not exist.

Aquí está mi configuración de freetds.conf:

[my_db] host = 12.34.56.789 port = 1433 tds version = 8.0

Y aquí está mi odbc.ini:

[my_dsn] Driver = /opt/local/lib/libtdsodbc.so Description = My Database Trace = no Servername = my_db Database = MyDB [ODBC Data Sources] my_dsn = FreeTDS

Todavía puedo conectarme a la otra base de datos que configuré en esta computadora (que se describe en la publicación de mi blog vinculada anteriormente), así que estoy bastante seguro de que el error no está en el extremo de Mac. He verificado en el servidor que estoy usando la dirección IP y el puerto correctos. ¿Alguna idea sobre cuál podría ser el problema y si está en el extremo del servidor?


Bud, desactive selinux o agregue lo siguiente a su servidor RedHat / CentOS:

setsebool -P httpd_can_network_connect_db 1 setsebool -P httpd_can_network_connect 1

Mejor siempre!


Después de innumerables horas de frustración logré que todo funcionara:

odbcinst.ini:

[FreeTDS] Description = FreeTDS Driver v0.91 Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so fileusage=1 dontdlclose=1 UsageCount=1

odbc.ini:

[test] Driver = FreeTDS Description = My Test Server Trace = No #TraceFile = /tmp/sql.log ServerName = mssql #Port = 1433 instance = SQLEXPRESS Database = usedbname TDS_Version = 4.2

FreeTDS.conf:

[mssql] host = hostnameOrIP instance = SQLEXPRESS #Port = 1433 tds version = 4.2

Primera conexión de prueba ( mssql es un nombre de sección de freetds.conf ):

tsql -S mssql -U username -P password

Debe ver algunas configuraciones pero no hay errores y solo un indicador 1> . Use quit para salir.

Luego probemos DSN / FreeTDS ( prueba es un nombre de sección de odbc.ini ; -v significa verboso):

isql -v test username password -v

Debes ver el mensaje Conectado!


He encontrado un problema con el Firewall. Por lo tanto, asegúrese de que su IP esté en la lista blanca y que el firewall no bloquee su conexión. Puede comprobar la conectividad con:

tsql -H somehost.com -p 1433

En mi caso, la salida fue:

Error 20009 (severity 9): Unable to connect: Adaptive Server is unavailable or does not exist OS error 111, "Connection refused" There was a problem connecting to the server


Parece que tienes un problema con tu fuente de datos dsn u odbc.

Intente omitir el dsn primero y conéctese usando:

TDSVER=8.0 tsql -S *serverIPAddress* -U *username* -P *password*

Si eso funciona, sabes que es un problema con tu dsn o con freetds usando tu dsn. Además, es posible que su versión tds no sea compatible con su servidor. Es posible que desee probar otras configuraciones de TDSVER (5.0, 7.0, 7.1).


Respondiendo porque esta respuesta surgió primero para la búsqueda cuando tenía el mismo problema:

[08S01] [unixODBC] [FreeTDS] [SQL Server] No se puede conectar: ​​Adaptive Server no está disponible o no existe

Las instancias con nombre MSSQL deben configurarse correctamente sin configurar el puerto. (la documentación en la configuración de freetds dice que la instancia de conjunto o el puerto NO AMBOS)

freetds.conf

[Name] host = Server.com instance = instance_name #port = port is found automatically, don''t define explicitly tds version = 8.0 client charset = UTF-8

Y en odbc.ini solo porque puede configurar Puerto, NO cuando esté usando una instancia con nombre.


Tuve el mismo problema, mi problema era que el servidor de seguridad en el servidor no estaba abierto desde la dirección IP actual.


1. Ver información sobre el servidor SQL.

tsql -LH SERVER_IP_ADDRESS locale is "C" locale charset is "646" ServerName TITAN InstanceName MSSQLSERVER IsClustered No Version 8.00.194 tcp 1433 np //TITAN/pipe/sql/query

2. Establezca su freetds.conf

tsql -C freetds.conf directory: /usr/local/etc [TITAN] host = SERVER_IP_ADDRESS port = 1433 tds version = 7.2

3 prueba

tsql -S TITAN -U user -P password

O

''dsn'' => ''dblib:host=TITAN:1433;dbname=YOURDBNAME'',

Consulte también http://www.freetds.org/userguide/confirminstall.htm (Ejemplo 3-5).

Si recibe el mensaje 20009, recuerde que no se ha conectado a la máquina. Es un problema de configuración o de red, no un error de protocolo. Verifique que el servidor esté activo, tenga el nombre y la dirección IP que utiliza FreeTDS y escuche el puerto configurado.