[egenix-users] Using mxodbc with SQL Server 2012

M.-A. Lemburg mal at egenix.com
Thu Sep 3 14:28:56 CEST 2015

On 03.09.2015 12:06, Sheila Allen wrote:
> On Thu, Sep 3, 2015 at 4:16 AM, M.-A. Lemburg <mal at egenix.com> wrote:
>> On 03.09.2015 08:44, Sheila Allen wrote:
>>>> I'm looking into the MS SQL Server Native client again as well, we
> tried
>>>> it when they first announced it and it would segfault with any
> significant
>>>> load
>>> We're currently testing the MS ODBC Driver for Linux, and ran into a
>>> similar segfault under load. This was resolved by upgrading unixODBC
> 2.3.0
>>> to 2.3.2, even though the MS ODBC Driver officially only supports 2.3.0.
>>> Some discussion of the issue here:
> https://social.msdn.microsoft.com/Forums/sqlserver/en-US/23fafa84-d333-45ac-8bd0-4b76151e8bcc/sql-server-driver-for-linux-causes-segmentation-fault
>> We are using the MS driver with unixODBC 2.3.2 just fine. The only
>> segfault we've seen so far is related to using Unicode strings with
>> DriverConnect():
>> http://www.egenix.com/products/python/mxODBC/doc/#_Toc427692959
>> If you can provide instructions on how to reproduce the problem
>> you are seeing under load, we can try to investigate this some
>> more.
> The segfault issue goes away with 2.3.2, as mentioned above. This
> discussion describes how to reproduce the issue using the unixODBC 2.3.0:
> https://social.msdn.microsoft.com/Forums/sqlserver/en-US/23fafa84-d333-45ac-8bd0-4b76151e8bcc/sql-server-driver-for-linux-causes-segmentation-fault

Thanks, we'll try to replicate this and then check with the
various unixODBC versions.

> The point here...the concern...is really that the official Microsoft
> certified unixODBC version is 2.3.0, a very old version with a known bug.
> The documentation mentions that version repeatedly, and specifically states
> that 2.3.1 is not supported.

The reason for this is likely a change in the naming of the unixODBC
shared libs. MS would have to create a new release for 2.3.1.
Here's the full story behind all this:

unixODBC has had some trouble with a major change in their
ABI: they switched from 32-bit SQLLEN to 64-bit SQLLEN (for 64-bit
platforms) late in the 2.2.x series (in 2.2.13).

To make people more easily recognize this change, a new minor
release was created (2.3.0), but unfortunately, they forgot to
also bump the shared lib version numbers (from .1 to .2).

In 2.3.1, they fixed this, so software built against 2.3.0 won't
find the shared libs built by 2.3.0.

Now, if you know that software was built against 2.3.0 (as in
the case of the MS driver), you can simply symlink the new .2
shared libs to .1 and make things work again.

It's a mess, but we'll eventually get over it. Just takes a few
years :-)

See the change log for more details:


Note that the MS driver only links against the ODBC installer
shared lib of unixODBC, not the ODBC driver manager itself, i.e.

> So the docs are really outdated, and I guess
> the installation script is too because it requires additional manual
> workarounds to use newer versions of unixODBC. Here are the Microsoft
> installation docs:
> https://www.microsoft.com/en-us/download/details.aspx?id=36437
> This has been raised in several threads, and has been a known issue since
> 2012, but Microsoft has failed to certify or document use of newer versions
> of unixODBC since then. Unless I'm just looking in the wrong place.
> Here's another article that turned up in a search for the driver...once
> again it describes use of unixODBC 2.3.0.
> https://msdn.microsoft.com/en-us/library/hh568449(v=sql.110).aspx
> So the question is whether it's a good idea to advocate for the use of this
> driver, which seems to be somewhat abandoned after several years.  Has
> anyone seen any statements from Microsoft that they're continuing to
> support it? I've seen this discussed among users also on the Microsoft
> blog, with no response:
> http://blogs.msdn.com/b/sqlnativeclient/archive/2013/01/23/introducing-the-new-microsoft-odbc-drivers-for-sql-server.aspx#10620294
> Am I just looking in the wrong places?

No, the 11.0.2270.0 version is their latest release. It was
published in Jan 2013:


Note that this is also their latest version for Windows, so
things are not as bad as they may seem :-)


Here's a good search to stay on top with the available driver
versions for SQL Server:


Marc-Andre Lemburg

Professional Python Services directly from the Source  (#1, Sep 03 2015)
>>> Python Projects, Coaching and Consulting ...  http://www.egenix.com/
>>> mxODBC Plone/Zope Database Adapter ...       http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
2015-08-27: Released eGenix mx Base 3.2.9 ...     http://egenix.com/go83

::::: Try our mxODBC.Connect Python Database Interface for free ! ::::::

   eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48
    D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
           Registered at Amtsgericht Duesseldorf: HRB 46611

More information about the egenix-users mailing list