sybase central and odbc mysql remote proxy error could not connect to odbc mysql socket

153 views
Skip to first unread message

PICCORO McKAY Lenz

unread,
Nov 30, 2016, 1:22:25 PM11/30/16
to venenuxsarisari, venenuxmassenkoh, vegnuli
RAPIDITO EXPLICO QUE SYBASSE puede manejar otras DBMS como si fuera una de sybase, 
estando remotas, puede manejar y hacer consultas a sus tablas como si fueran de la misma database, 
ES DECIR consula una tabla pepe de mysq desde la base de datos pablo en sybase, sin traumas.

Sybase central no lee completamente los parametros del odbc de mysql actual,
esto es que no usa el /etc/odbc.ini global y aparte no soporta el ocbcinst.ini del reciente
api de odbc
, para terminar no obedece los parametros de SERVER o SERVERNAME del
archivo odbc
, permitiendo solo coneciones localhost. (al menos el 12 anywhere y 16, developer)

https://blogs.oracle.com/mysqlconnectors-ODBC/entry/how_to_deal_with_mysql

sucede que no encontraba el DSN , y es porque sybase central no toma sino
el del usuario que ejecuta el sybase, esto es un terrible fallo de
rendimiento y un claro hoyo de seguridad, porque teneindo en cuenta los
guindosers, ejecutaran el entorno grafico..

SALE:
Connection failed.
Unable to connect to server 'remotoproxy': [MySQL][ODBC 5.1 Driver]Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
[Sybase][ODBC Driver][SQL Anywhere]Unable to connect to server 'remotoproxy': [MySQL][ODBC 5.1 Driver]Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
SQLCODE: -656
SQLSTATE: HY000
SQL Statement: SELECT FIRST table_name FROM dbo.sp_remote_tables( 'remotoproxy', NULL, NULL, NULL, 1 ) ORDER BY 1

lo segundo es que hay que configurar correctamente el odbc, y no usar la
referencia odbcinst.ini, el archivo ".odbc.ini" debe estar configurado a la
antigua (todo metido incluido la referencia al driver), sin usar el nombre
del diver sino la ruta exacta del mismo

sin embargo esto no es suficiente, solo podra usar y conectar bases de
datos que esten en localhost, esto es un error en el puto sybase,

SALE ENTONCES:
Connection failed.
Unable to connect to server 'remotoproxy': [MySQL][ODBC 5.1 Driver]Access denied for user 'USER'@'localhost' (using password: YES)
[Sybase][ODBC Driver][SQL Anywhere]Unable to connect to server 'remotoproxy': [MySQL][ODBC 5.1 Driver]Access denied for user 'USER'@'localhost' (using password: YES)
SQLCODE: -656
SQLSTATE: HY000
SQL Statement: SELECT FIRST table_name FROM dbo.sp_remote_tables( 'gastossystemadb', NULL, NULL, NULL, 1 ) ORDER BY 1


pero las tablas prosy y los servidores remote le doy credito porque es la
unica DBMS que puede conectar dos bases de datos en simples pasos sin
depender de la red, usando solo odbc, esto jamas lo ha podido igualar
postres (necesita slony), ni mysql (necesita replication), ni oracle
(necesita plata y muuuucha ram), aparte de que slony y replication dependen
de la red y su configuracion requiere nivel tecnico medio, en sybase con
dos click se realiza...


mi conclusion es que la version developer anywhere 12 y 16 solo conecta remote servers
localhost, una cosa no tan ilogica, porque aun cuando es localhost podras consultar tablas 
de mysql en el mismo sybase, permitiendo transparencia y evitando coneciones multiples en
los codigos de gambas, php o sea cual sea el desarrollo

OJO: hasta que se le mete una licencia network y asi puede conectarse
a bases de datos que no sean localhost... eso lo confirmare con la propia
gente de SAP en unos dias y coloco tanto los paquetes como las MUCHAS HACKS
QUE REALIZE como mas de 10 coneciones sin licencia y uso de todos los cores
de la maquina...


Lenz McKAY Gerardo (PICCORO)
http://qgqlochekone.blogspot.com

PICCORO McKAY Lenz

unread,
Dec 2, 2016, 2:11:06 PM12/2/16
to venenuxsarisari, venenuxmassenkoh, vegnuli
encontre esto, sin embargo no es la solucion total, sino parcial,
lamentablemente es tan pichachero el sybase que en linux solo conecta
localemtne a otros odbc, no conecta a odbc remoto!

para rematar se requiere llave para descargar sybase.. malditos de sap
y sybase los hakeare a todos, pondre un binario sin restricciones

================(Build #4264 - Engineering Case #783369)================

On Unix systems, if an ODBC connection string contained a parameter with
an empty value followed by a DSN parameter (for example
"dbn=;dsn=mydsn"),
the DSN would not be read and the connection would have failed. This has
been fixed.



2016-11-30 13:52 GMT-04:30, PICCORO McKAY Lenz <mckayg...@gmail.com>:
> RAPIDITO EXPLICO QUE SYBASSE puede manejar otras DBMS como si fuera una de
> sybase,
> estando remotas, puede manejar y hacer consultas a sus tablas como si
> fueran de la misma database,
> ES DECIR consula una tabla pepe de mysq desde la base de datos pablo en
> sybase, sin traumas.
>
> *Sybase central no lee completamente los parametros del odbc de mysql
> actual,*
> esto es que
> *no usa el /etc/odbc.ini global y aparte no soporta el ocbcinst.ini del
> reciente api de odbc*, para terminar
> *no obedece los parametros de SERVER o SERVERNAME del archivo odbc*,
> *mi conclusion es que la version developer anywhere 12 y 16 solo conecta
> remote servers localhost, una cosa no tan ilogica, porque aun cuando es
> localhost podras consultar tablas *
> *de mysql en el mismo sybase, permitiendo transparencia y evitando
> coneciones multiples en*
> *los codigos de gambas, php o sea cual sea el desarrollo*
>
> OJO: hasta que se le mete una licencia network y asi puede conectarse
> a bases de datos que no sean localhost... eso lo confirmare con la propia
> gente de SAP en unos dias y coloco tanto los paquetes como las MUCHAS
>
> *HACKS QUE REALIZE como mas de 10 coneciones sin licencia y uso de todos
> los cores de la maquina...*
>
> Lenz McKAY Gerardo (PICCORO)
> http://qgqlochekone.blogspot.com
>


--

PICCORO McKAY Lenz

unread,
Dec 2, 2016, 3:46:21 PM12/2/16
to venenuxsarisari, venenuxmassenkoh, vegnuli
lamentable el no poder conectarme a odbc en otros lugares sino solo local logre encontrar esto:

http://laserquest.pagesperso-orange.fr/linux/

es un conector grafico solamente pero sirve, esto permitira verificar el remote proxy para resolver porque falla, segurmanete es la fomra de conecion no he intentado DNS-less (un string solamente sin usar odbc.ini)



Lenz McKAY Gerardo (PICCORO)

PICCORO McKAY Lenz

unread,
Dec 2, 2016, 4:11:25 PM12/2/16
to venenuxsarisari, venenuxmassenkoh, vegnuli
notando el problema de mapeo de tablas proxy tambien note el odbc no se sabe si es ansi o unicode, pero en el mysqldev aclaran que solo el 5.2 es unicode habil, asi que debian no soporta mapeos correctos y falla:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=846641
esto seguro es la razon del error de mapeo al regresar por odbc :
 TDS: cannot resolve datatype 'univarchar'
provocado en freedts!

a todas estas, toda una vuelva, usar la db mysql, mapearla y verla en sybase , para despues consumirla en odbc-freedts, es como meterse en doble capa odbc....

NO! porque la ventaja es poder manejar datos directamente en un unico engine, en vez de usar multipoles coneciones en el codigo,c omplicando el codigo, para eso le dejamos el trabajo de coneccion a las odbc!

Lenz McKAY Gerardo (PICCORO)

PICCORO McKAY Lenz

unread,
Dec 2, 2016, 5:08:59 PM12/2/16
to venenuxsarisari, venenuxmassenkoh, vegnuli
parchee parte del driver y ahora puedo insertar:

SQL> insert entidad (cod_entidad) values ('eee')
SQLRowCount returns 1
SQL> select cod_entidad from entidad
[37000][unixODBC][FreeTDS][SQL Server]SQL Anywhere Error -85: Communication error
[01000][unixODBC][FreeTDS][SQL Server]TDS: cannot resolve datatype 'univarchar'
[ISQL]ERROR: Could not SQLExecute
SQL> 

falta poder realizar un select con joins y listo, venenux sera el unico distro en mapear tablas proxy desde sybase, ni redhat lo hace ni oracle unix

por ahora remiti todo a debian y a github en el proyecto https://github.com/FreeTDS/freetds/issues/88

el lunes veo un paquete de freedts mas alla de 0.9X

Lenz McKAY Gerardo (PICCORO)

vladimir fatheev

unread,
Dec 2, 2016, 5:41:28 PM12/2/16
to venenuxsarisari
para que necesitas conectarte a otras base de datos? si todo es sybase y va a replicar por FTP. por que a juro hay que conectarlo a mysql?,

--
https://groups.google.com/forum/m/#!forum/venenuxsarisari
---
Has recibido este mensaje porque estás suscrito al grupo "venenuxsarisari" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a venenuxsarisari+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a venenuxsarisari@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Message has been deleted

itamarperdomo

unread,
Dec 9, 2016, 9:29:31 AM12/9/16
to venenuxsarisari, venenuxm...@googlegroups.com, veg...@googlegroups.com
La solucion esta en usar un DSN sin archivo, (DSN-less form) https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-configuration-connection-without-dsn.html esto hace que tome la coneccion de su propio entorno, esto es un problema de unicode, ya documentado, el driver no toma los caracteres uno a uno, y los toma por pares.. usando la forma DSN-less toma la cadena directa en vez de tomarla desde el archivo el cual implica lectura de caracteres en codificaciones, mientras si lo toma desde el mismo aplicativo lo lee con el formato del aplicativo.
Espero poder haber aportado a todos.

PICCORO McKAY Lenz

unread,
Dec 14, 2016, 11:34:31 AM12/14/16
to venenuxsarisari, venenuxmassenkoh, vegnuli
He documentado todo lo que pude, adiciono que ODBC FreeDTS 1.X no lo he probado aun porque donde estoy viviendo no tengo internet y en el trabajo estoy muy full para hacer el paquete (ya que debian solo tiene hasta el 0.91)

https://vegnuli.wordpress.com/2016/12/14/venenux-odbc-y-sybase-nocicones-y-conectividad/ (tambien esta en blogspot en el "tuitel" y en el "faisbuk")

alli coloque todo:


Soporte ODBC Sybase/SAPIQ en linux

En linux hay 3 tipos de software ODBC para conectarse a sybase:
proveedorusa odbcinsttodo en odbc.iniDBMS soportadasdetalles
SAP sybaseNONECESARIOanywehere, IQ, SAPViene incluido en el instalador del engine ( libdbodbc )
FreeDTSSISOPORTADOSQL Server, Adaptive Server/EnterpriseOpensourse, solo 1.X para mas caracteristicas
EasySoftSISOPORTADOanywhere, IQ, SAP,
SqlServer/Adaptive
trial 14dias, SOPORTA TODO LAS CARACTERISTICAS incluyendo codificacion


Limitaciones linux ODBC sybase

  1. FREEDTS no soporta tipos de datos como nvarchar y ntext faltan
  2. FREEDTS solo “pasa” las sentencias, no las interpreta como el de easy soft
  3. SAPODBC solo “pasa” las sentencias, ya que asume se conecta a un engine Sybase
  4. SAPODBC aunque solo usa el odbc.ini el engine no interpreta, requiere la forma DSN-less
  5. EasySoft es mejor opcion pero es caro y a medida avanza no soporta versiones sybase viejas


fuentes de software y delimitantes

  1. Sybase anywhere se compro por SAP en 2010/2012 desde sybase 17 todo su software no viene en la forma “todo en uno”, sino separado
  2. librerias ODBC desde sybase anywhere o IQ 12 a 16 vienen incluidas tanto el propio software ODBC como su conector, 17 solo el conector
  3. modulo ct sybase para php como compilar:https://sourceforge.net/p/asemon/wiki/recompile%20sybase_ct%20module%20on%20Linux/
  4. modulo ct sybae viene precompilado para linux php 5.2.X y 5.3.X en sybase anywhare 12 y 16, pero en 17 ya no y necesita SDK.


Problemas de conversion y conectividad ANSI/UTF8

Sybase soporta el “mapear” tablas de otras bases de datos como si fueran suyas, esto se le llama tablas proxy en base de datos remotas pero tienen un problema, dependen del soporte ODBC de la base de datos origen.
  1. UNICODE: Por ejemplo en el caso Postgres, el ODBC provee dos tipos de conecion el ansi y el unicode, pero en el caso de mysql no esta muy claro, sino el la version liberada en 2015 que ya provee dos modulso bien definidos tal cual lo hace el de postgres. Mismo problema sucede con Oracle. Por ende si se pretende usar Sybase por medio de ODBC hay que tener en cuenta el mapeo de datos, ademas de el soporte (FreeDTS es el mas limitado de los odbc), ya que por medio de ODBC no “pasan” todas las caracteristicas y entre unicode y UTF8 el odbc utiliza 2bytes en vez de 4bytes, esto mapea mal los dato con errores como "cannot map datatype nchar" en el odbc o el php o donde se consulte.
  2. DSN-less: el sybase, el central y el dbisql no leen completamente un archivo odbc.ini, por ende si se realiza conecciones odbc desde sybase, estas deben ser de la forma DSN-less, un ejemplo claro es tratando de conectarse a Mysql, siempre apuntara a localhost si se pretente usar toda la configuracion desde un DSN de un archivo odbd con el error "Can't connect to local MySQL server through socket ", se evita usando la forma DSN-less de myodbc en el string de coneccion de sybase.


Trabajar ODBC con Sybase/SQL (freeDTS)

Esto es documentación técnica para la tarea #412 que requiere crear en dinámico el conector odbc


Software requerido y preparación ODBC

En una consola instalar freedts de venenux (recomendado 0.95 en adelante, debian aun no los tiene) y odbcunix asi:
apt-get install unixodbc tdsodbc libsybdb5 libct4 
Esto creará un archivo de sistema en /etc/ que tendrá los parámetros de conectividad para DBMS en sybase (solo en venenux) de no ser asi deben leer:http://qgqlochekone.blogspot.com/2010/10/setup-odbc-using-postgresql-and-access.html. y adaptarlo segun freedts (tdsodbc en share).


Conexiones ODBC Sybase:

NOTA un archivo odbc.ini u/o .odbc.ini puede tener una o mas secciones que definan una conexión
En una consola crear un archivo odbc asi:
touch .odbc.ini 
El contenido no usa ni usuario ni clave, tampoco connection settings, entonces de este debera ser asi:
[oasis0] 
Description = TDS sybase SQL 
Driver = FreeTDS 
Trace = Yes 
TraceFile = /tmp/tdsqlodbc.log 
Database = oasis0 
Server = 192.168.1.12 
Port = 2638 


Probar la conexcion ODBC realizada

Se usa tres parametros, el nombre (la parte entre corchetes) el usuario y la clave de conexión de acceso al a base de datos deseada, el usuario y clave son mandatorios ya que no son nunca asumidos en el odbc.ini asi:
(ejemplo usando la conexión arriba oasis0 pero con usuario y clave ficticio)
isql oasis0 pepe pablo 
+---------------------------------------+
 | Connected! | | |
 | sql-statement |
 | help [tablename] |
 | quit |
+---------------------------------------+ 
SQL>  


Trabajar con el odbc Sybase Linux (SAP odbc)

Cuando realize la instalacion hagala en /opt/sap/sqlanywhere12 aqui se asumira esta ruta.


Software requerido y preparación ODBC

Requiere nombre en bruto de ODBC lib (libodbc.so en vez de libodbc.so.2), ademas el instalador tiene un script llamado sa_config (hay dos uno para bash y otro para cshell) este ensena hay dos rutas importante que deben estar presentes:
export SQLANY12=/opt/sap/sqlanywhere12 
export LD_LIBRARY_PATH="$SQLANY12/lib32:$LD_LIBRARY_PATH"

apt-get install unixodbc-dev
El software de SAP/Sybase no usa ODBCINST.ini por ende no se registra en /etc/ sin embargo se puede usar de esta manera.
NOTA: tenga en cuenta que aunque registrarlo en odbcinst sirve, el software de SAP/Sybase no usa sino odbc.ini o DSN-less


Conexiones odbc SAP sybase:

NOTA un archivo odbc.ini u/o .odbc.ini puede tener una o mas secciones que definan una conexión
En una consola crear/verificar un archivo odbc asi:
touch .odbc.ini 
El contenido depende del archivo libreria provisto, en este caso el nombre varia segun la instalacion, busque en el manual o ayuda de sybase, de este deberia ser SIMILAR asi:
[oasis0] 
Description = TDS sybase 
SAP Driver = /opt/sap/sqlanywhere12/lib32/libdbodbc12_r.so 
Server = 37.10.252.253 
Port = 2638 

Probar la conexcion ODBC realizada

Se usa tres parametros, el nombre (la parte entre corchetes) el usuario y la calve de conexión de acceso al a base de datos deseada, asi:
(ejemplo usando la conexión arriba nominaq pero con usuario y clave ficticio)
dbisql -c "dsn=oasis0;DBN=oasis0;UID=pepe;PWD=pablo" -nogui 
dbisql>  

Lenz McKAY Gerardo (PICCORO)

--
Reply all
Reply to author
Forward
0 new messages