Re: Problem with the latest Sybase ODBC driver

Igor Korot <[email protected]> Sat, 7 Jul 2018 12:48:29 -0500
Newsgroups gmane.comp.db.tds.freetds
Message-ID <CA+FnnTwRo2OuQNShhSaQewo-31ARiV=vPpZv8gAG9Jt6m0ervg@mail.gmail.com>
Frediano,
So I did check the sources and it looks like under non-Windows
platforms the driver doesn't support
asking for the login information.

So I changed my code a bit passing SQL_DRIVER_NOPROMPT to SQLDriverConnect.

However, I still can't connect.

So I turned on the logging on freeTDS.

Attached please find 2 freeTDS log files:
- one is from the isql unixODBC session which is successful
- other is from my software which uses SQLDriverConnect which fails.

Both are produced with TDSDUMP environment variable.
By looking at those logs it looks like I have to retrieve the
userid/password pair and supply it
to the connection string.
But I thought that this is the job of the driver. Was I wrong?

If you need any more information let me know.

I am trying to connect to Sybase 16 server using freeTDS 1.00.14 and
unixODBC 2.3.5.

Thank you.


On Fri, Jul 6, 2018 at 10:16 PM, Igor Korot <[email protected]> wrote:
> Frediano,
>
> On Tue, Jul 3, 2018 at 12:09 AM, Frediano Ziglio <[email protected]> wrote:
>> 2018-07-01 6:08 GMT+01:00 Igor Korot <[email protected]>:
>>> Frediano,
>>>
>>> On Sat, Jun 30, 2018 at 8:08 PM, Igor Korot <[email protected]> wrote:
>>>> Frediano,
>>>> Any idea why freeTDS fails to connect?
>>>
>>
>> Too many issues in this thread, I'm a bit confused, from Sybase
>> libraries to crash to ODBC settings, I'll try to reply to this one
>>
>>> I was able to connect with tsql by adding to freetds.conf:
>>>
>>> [code]
>>> [MySybase]
>>> host = IGORREINCLOUD
>>> port = 5000
>>> tds version = 5.0
>>> [/code]
>>>
>>> and then doing from the command prompt:
>>>
>>> [code]
>>> igor@IgorReinCloud ~/dbhandler $ tsql -S MySybase -U dba -P wasqra
>>> locale is "en_US.utf8"
>>> locale charset is "UTF-8"
>>> using default charset "UTF-8"
>>> Msg 4002 (severity 14, state 1) from IGORREINCLOUD:
>>>     "Login failed.
>>> "
>>
>> This is failing, I suspect you are trying a wrong user/password
>>
>>> There was a problem connecting to the server
>>> igor@IgorReinCloud ~/dbhandler $ tsql -S MySybase -U sa -P wasqra
>>> locale is "en_US.utf8"
>>> locale charset is "UTF-8"
>>> using default charset "UTF-8"
>>> Msg 5704 (severity 10, state 1) from IGORREINCLOUD:
>>>     "Changed client character set setting to 'iso_1'.
>>> "
>>
>> This is a successful connection.
>>
>>> 1> USE draft;
>>> 2> go
>>> Msg 102 (severity 15, state 181) from IGORREINCLOUD Line 1:
>>>     "Incorrect syntax near ';'.
>>> "
>>> 1> USE draft
>>> 2> go
>>> 1> SELECT * FROM leagues
>>> 2> go
>>> id    name    drafttype    scoringtype    roundvalues    leaguetype
>>> salary    benchplayers
>>> 1    Demo - Roto (Auction)    1    1    1    demo     260    0
>>> 2    Demo - Roto (Draft)    3    1    1    demo     260    0
>>> 3    Demo - Points (Auction)    1    2    1    demo     260    0
>>> 4    Demo - Points (Draft)    3    2    1    demo     260    0
>>> (4 rows affected)
>>> 1> quit
>>> igor@IgorReinCloud ~/dbhandler $
>>> [/code]
>>>
>>> Do you see any issues with my freeTDS ODBC configuration?
>>>
>>
>> Looking back at ODBC I would say the option is "TDS_Version", not "TDS
>> Version", see http://www.freetds.org/userguide/odbcconnattr.htm.
>> Usually the steps I take are setting up tsql, then use "Servername" in
>> odbc.ini then more from freetds.conf to odbc.ini the various settings
>> to get an odbc only configuration.
>>
>> At the beginning you were using Sybase drivers, with FreeTDS you can
>> use TDSDUMP and TDSDUMPCONFIG environment to help debugging, see
>> http://www.freetds.org/userguide/logging.htm.
>
> So the unixODBC isql connection worked.
> Now I tried to connect from my program. It failed.
>
> Here are the lines from the sql.log files:
>
> [code]
> [ODBC][27195][1530943457.280532][/var/tmp/portage/dev-db/unixODBC-2.3.5-r1/work/unixODBC-2.3.5/DriverManager/SQLDriverConnectW.c][290]
>         Entry:
>             Connection = 0x292cc00
>             Window Hdl = 0x28c62a0
>             Str In =
> [DSN=Sybase_16_freeTDS;Driver=Sybase_freeTDS][length = 43 (SQL_NTS)]
>             Str Out = 0x2a87400
>             Str Out Max = 1024
>             Str Out Ptr = 0x7ffcb68b6550
>             Completion = 1
>         UNICODE Using encoding ASCII 'UTF8' and UNICODE 'UTF16LE'
>
> [ODBC][27195][1530943457.327913][/var/tmp/portage/dev-db/unixODBC-2.3.5-r1/work/unixODBC-2.3.5/DriverManager/SQLDriverConnectW.c][699]
>         Exit:[SQL_ERROR]
> [ODBC][27195][1530943457.328028][/var/tmp/portage/dev-db/unixODBC-2.3.5-r1/work/unixODBC-2.3.5/DriverManager/SQLGetDiagRecW.c][516]
>         Entry:
>             Connection = 0x292cc00
>             Rec Number = 1
>             SQLState = 0x7ffcb68b60d0
>             Native = 0x7ffcb68b60a4
>             Message Text = 0x7ffcb68b6100
>             Buffer Length = 1024
>             Text Len Ptr = 0x7ffcb68b609c
> [ODBC][27195][1530943457.328082][/var/tmp/portage/dev-db/unixODBC-2.3.5-r1/work/unixODBC-2.3.5/DriverManager/SQLGetDiagRecW.c][563]
>         Exit:[SQL_SUCCESS]
>             SQLState = [HYC00]
>             Native = 0x7ffcb68b60a4 -> 0
>             Message Text = [[FreeTDS][SQL Server]Driver not capable]
> [ODBC][27195][1530943457.328149][/var/tmp/portage/dev-db/unixODBC-2.3.5-r1/work/unixODBC-2.3.5/DriverManager/SQLGetDiagRecW.c][516]
>         Entry:
>             Connection = 0x292cc00
>             Rec Number = 2
>             SQLState = 0x7ffcb68b60d0
>             Native = 0x7ffcb68b60a4
>             Message Text = 0x7ffcb68b6100
>             Buffer Length = 1024
>             Text Len Ptr = 0x7ffcb68b609c
> [ODBC][27195][1530943457.328198][/var/tmp/portage/dev-db/unixODBC-2.3.5-r1/work/unixODBC-2.3.5/DriverManager/SQLGetDiagRecW.c][563]
>         Exit:[SQL_SUCCESS]
>             SQLState = [08001]
>             Native = 0x7ffcb68b60a4 -> 0
>             Message Text = [[FreeTDS][SQL Server]Unable to connect to
> data source]
> [ODBC][27195][1530943457.328247][/var/tmp/portage/dev-db/unixODBC-2.3.5-r1/work/unixODBC-2.3.5/DriverManager/SQLGetDiagRecW.c][516]
>         Entry:
>             Connection = 0x292cc00
>             Rec Number = 3
>             SQLState = 0x7ffcb68b60d0
>             Native = 0x7ffcb68b60a4
>             Message Text = 0x7ffcb68b6100
>             Buffer Length = 1024
>             Text Len Ptr = 0x7ffcb68b609c
> [ODBC][27195][1530943457.328283][/var/tmp/portage/dev-db/unixODBC-2.3.5-r1/work/unixODBC-2.3.5/DriverManager/SQLGetDiagRecW.c][563]
>         Exit:[SQL_NO_DATA]
> [ODBC][27195][1530943462.470074][/var/tmp/portage/dev-db/unixODBC-2.3.5-r1/work/unixODBC-2.3.5/DriverManager/SQLFreeHandle.c][290]
>         Entry:
>             Handle Type = 2
>             Input Handle = 0x292cc00
> [ODBC][27195][1530943462.470352][/var/tmp/portage/dev-db/unixODBC-2.3.5-r1/work/unixODBC-2.3.5/DriverManager/SQLFreeHandle.c][339]
>         Exit:[SQL_SUCCESS]
> [ODBC][27195][1530943462.470433][/var/tmp/portage/dev-db/unixODBC-2.3.5-r1/work/unixODBC-2.3.5/DriverManager/SQLFreeHandle.c][220]
>         Entry:
>             Handle Type = 1
>             Input Handle = 0x29b6d20
> [/code]
>
> I presume the "Driver not capable" error comes from the "Completion" parameter?
> Or there is something else?
>
> Please advise.
>
> Thank you.
>
>>
>>> Thank you.
>>>
>>>>
>>>> Thank you.
>>>>
>>>>
>>>> On Thu, Jun 28, 2018 at 8:02 AM, John Kendall <[email protected]> wrote:
>>>>>
>>>>>> On Jun 28, 2018, at 5:36 AM, Igor Korot <[email protected]> wrote:
>>>>>>
>>>>>> Hi, John,
>>>>>>
>>>>>> On Wed, Jun 27, 2018 at 11:14 AM, John Kendall <[email protected]> wrote:
>>>>>>> Igor,
>>>>>>> I'm on Centos 7.5 and it looks like I'm using the exact same version of ASE:
>>>>>>> Adaptive Server Enterprise/16.0 SP02 PL02/EBF 25320 SMP/P/x86_64/Enterprise Linux/ase160sp02plx/2492/64-bit/FBO/Sat Nov 21 04:05:39 2015
>>>>>>>
>>>>>>> I'm using unixODBC 2.3.1 and the freeTDS odbc driver without issue.
>>>>>>> I recall having the Sybase ODBC driver working, but settled on the FreeTDS driver for simplicity.
>>>>>>
>>>>>> This is my setup:
>>>>>>
>>>>>> [code]
>>>>>> igor@IgorReinCloud ~/dbhandler $ cat /etc/unixODBC/odbcinst.ini
>>>>>> [ODBC]
>>>>>> Trace=yes
>>>>>> TraceFile=/tmp/sql.log
>>>>>> Pooling=No
>>>>>>
>>>>>> [Sybase]
>>>>>> Description=Sybase 16 Native Driver
>>>>>> Driver=/opt/sap/DataAccess64/ODBC/lib/libsybdrvodb.so
>>>>>> UsageCount=1
>>>>>>
>>>>>> [Sybase_freeTDS]
>>>>>> Description=Sybase FreeTDS Driver
>>>>>> Driver=/usr/lib64/libtdsodbc.so
>>>>>> UsageCount=1
>>>>>> igor@IgorReinCloud ~/dbhandler $ cat /etc/unixODBC/odbc.ini
>>>>>> [ODBC Data Sources]
>>>>>> Sybase_16_demo=Sybase 16 ODBC driver
>>>>>> Sybase_16_test=Sybase 16 ODBC driver
>>>>>> Sybase_16_freeTDS=Sybase_freeTDS
>>>>>>
>>>>>> [Sybase_16_demo]
>>>>>> Description=Sybase 16 ODBC Driver
>>>>>> Driver=Sybase
>>>>>> Port=5000
>>>>>> Server=IGORREINCLOUD
>>>>>> UserID=sa
>>>>>> Password=
>>>>>> Database=pubs2
>>>>>> Option=3
>>>>>>
>>>>>> [Sybase_16_test]
>>>>>> Description=Sybase 16 ODBC native driver
>>>>>> Driver=Sybase
>>>>>> Port=5000
>>>>>> Server=IG
>>>>>> Server=IGORREINCLOUD
>>>>>> UserID=sa
>>>>>> Password=
>>>>>> Database=draft
>>>>>> Option=3
>>>>>>
>>>>>> [Sybase_16_freeTDS]
>>>>>> Description=Sybase 16 freeTDS ODBC driver
>>>>>> Driver=Sybase_freeTDS
>>>>>> Port=5000
>>>>>> Server=IGORREINCLOUD
>>>>>> UserID=sa
>>>>>> Password=
>>>>>> Database=draft
>>>>>> TDS Version=5.0
>>>>>> Option=3
>>>>>> [/code]
>>>>>>
>>>>>> And this is from the ODBC log for freeTDS driver:
>>>>>>
>>>>>> [code]
>>>>>> [ODBC][15829][1530200010.883129][/var/tmp/portage/dev-db/unixODBC-2.3.2-r1/work/unixODBC-2.3.2/DriverManager/SQLConnect.c][3727]
>>>>>>        Entry:
>>>>>>            Connection = 0x637050
>>>>>>            Server Name = [Sybase_16_freeTDS][length = 17 (SQL_NTS)]
>>>>>>            User Name = [sa][length = 2 (SQL_NTS)]
>>>>>>            Authentication = [******][length = 6 (SQL_NTS)]
>>>>>>        UNICODE Using encoding ASCII 'UTF8' and UNICODE 'UTF16LE'
>>>>>>
>>>>>>        DIAG [01000] [FreeTDS][SQL Server]Adaptive Server connection failed
>>>>>>
>>>>>>        DIAG [S1000] [FreeTDS][SQL Server]Unable to connect to data source
>>>>>>
>>>>>> [ODBC][15829][1530200010.924065][/var/tmp/portage/dev-db/unixODBC-2.3.2-r1/work/unixODBC-2.3.2/DriverManager/SQLConnect.c][4099]
>>>>>>        Exit:[SQL_ERROR]
>>>>>> [/code]
>>>>>>
>>>>>> The native driver works OK - I can connect without any issues.
>>>>>>
>>>>>> Do you see any problems?
>>>>>>
>>>>>> I'm trying to connect with:
>>>>>>
>>>>>> isql Sybase_16_freeTDS sa <password>
>>>>>>
>>>>>> Thank you.
>>>>>
>>>>> Upon further investigation, my ODBC success is via PHP. I  am having problems with unixODBC isql as well.
>>>>> So I'm no help.
>>>>>
>>>>>>
>>>>>>>
>>>>>>> John
>>>>>>>
>>>>>>>
>>>>>>> On Jun 27, 2018, at 10:37 AM, Igor Korot <[email protected]<mailto:[email protected]>> wrote:
>>>>>>>
>>>>>>> Hi, ALL,
>>>>>>> This post is not directly related to the freeTDS, but I'm hoping that
>>>>>>> someone can help.
>>>>>>>
>>>>>>> I have a latest Sybase 16.0 version Development Edition installed on Linux.
>>>>>>> I also have a unixODBC installed.
>>>>>>>
>>>>>>> I'm trying to connect to the server using the default Sybase ODBC
>>>>>>> driver with the
>>>>>>> unixODBC isql program.
>>>>>>>
>>>>>>> Unfortunately I have a problem. The connection works, but then issuing
>>>>>>> the simple
>>>>>>> query, like "SELECT * FROM <my_table>;", where my table is locatedinside
>>>>>>> my local database (the one I created) segfaults.
>>>>>>> Trying to do the same with the Sybase demo database works fine.
>>>>>>>
>>>>>>> I didn't try to do anything with the freeTDS driver yet. I will probably do that
>>>>>>> over the weekend.
>>>>>>>
>>>>>>> Does anybody here have Sybase 16 installed? Did you try ODBC connection
>>>>>>> to the server?
>>>>>>>
>>>>>>> Thank you.
>>>>>>>
>>>>>>> P.S.: Software versions:
>>>>>>> 1> select @@version
>>>>>>> 2> go
>>>>>>>
>>>>>>> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>>>>>> Adaptive Server Enterprise/16.0 SP02 PL02/EBF 25320 SMP/P/x86_64/Enterprise Lin
>>>>>>> ux/ase160sp02plx/2492/64-bit/FBO/Sat Nov 21 04:05:39 2015
>>>>>>>
>>>>>>> (1 row affected)
>>>>>>> 1> exit
>>>>>>>
>>>>>>> [/code]
>>>>>>>
>>>>>>> [code]
>>>>>>>
>>>>>>> [ebuild U ] dev-db/unixODBC-2.3.5-r1::gentoo [2.3.2-r1::gentoo]
>>>>>>> USE="minimal unicode -odbcmanual -static-libs" ABI_X86="32 (64)
>>>>>>> (-x32)" 1,596 KiB
>>>>>>>
>>>>>>> [/code]
>>>>>>>
>>>>>>> The current version of unixODBC is 2.3.2-r1 from gentoo repository.
>>
>> Not much experience with Gentoo, looks like directories are completely
>> different.
>>
>> Frediano
>> _______________________________________________
>> FreeTDS mailing list
>> [email protected]
>> https://lists.ibiblio.org/mailman/listinfo/freetds

_______________________________________________
FreeTDS mailing list
[email protected]
https://lists.ibiblio.org/mailman/listinfo/freetds
freetds.log.fail (application/octet-stream, 2.7 KB) - not displayed
freetds.log.success (application/octet-stream, 11.5 KB) - not displayed