Re: SQL Server 2019: CHAR(N) using UTF-8 is seen as SQL_NVARCHAR by SQLDescribeCol()

Frediano Ziglio <[email protected]> Wed, 27 Feb 2019 14:08:16 +0000
Newsgroups gmane.comp.db.tds.freetds
Message-ID <CAHt6W4fVEtXeU01zdrrfv2oBvvNmJBhvfYE9BQSPLbMYTtESiQ@mail.gmail.com>
Hi,
  I would try to use TDS 7.4, not 7.3.
Also I would try to use Microsoft ODBC driver and a network analyzer
(like wireshark).

Regards,
  Frediano

Il giorno mar 26 feb 2019 alle ore 11:26 Sebastien FLAESCH
<[email protected]> ha scritto:
>
> Testing FreeTDS 1.1rc3 with SQL Server 2019:
>
> I get an unexpected SQL type code with a CHAR(10) column, when the
> database collation is using UTF-8.
>
> Instead of SQL_CHAR (or SQL_WCHAR), I get SQL_WVARCHAR.
>
> I have created a database with this collation:
>
>    Latin1_General_100_CI_AS_SC_UTF8
>
> Then created a table like this:
>
>    CREATE TABLE mytab1 ( col1 CHAR(10) )
>
> and inserted a row:
>
>    INSERT INTO mytab1 VALUES ( 'abc' )
>
> Then in the ODBC program:
>
>    SQLExecDirect(.."SELECT * FROM mytab1"..)
>    SQLDescribCol(...)
>
> Check the TDSDUMP trace in attachment (freetds-2019-1.log)
>
> token.c:1541:tds7_get_data_info:
>          colname = col1
>          type = 39 (varchar)
>          server's type = 231 (x UCS-2 varchar)           <-- 231 ?
>          column_varint_size = 2
>          column_size = 20 (20 on server)
>
>
> The same program, connecting to SQL Server 2017 (were DB collation is Latin1
> without UTF-8):
>
>
> token.c:1541:tds7_get_data_info:
>          colname = col1
>          type = 47 (char)
>          server's type = 175 (xchar)          <-- 175
>          column_varint_size = 2
>          column_size = 10 (10 on server)
>
> With SQL Server 2019, when using another collation (non-UTF-8)
>
>     CREATE TABLE mytab2 ( col1 CHAR(10) COLLATE Latin1_General_CI_AS )
>
> I get the expected tds type code...
>
> Seb
> _______________________________________________
> FreeTDS mailing list
> [email protected]
> https://lists.ibiblio.org/mailman/listinfo/freetds