TDS Driver deprecation.

Published Tuesday February 9th, 2010
8 Comments on TDS Driver deprecation.
Posted in News, Qt, SQL

Those of you who have an interest in the SQL functionality of Qt may have seen my name floating around a bit for the last year or three. I’ve taken over the care and tending of the SQL subsystem. Sometimes you have to make hard decisions. Decisions to prune parts of the garden that you’ve taken into your care. One of those decisions is coming up for the 4.7 release.

The QTDS driver is in dire need of a full rewrite or a deprecation in favour of another system that provides equivalent functionality. As QODBC offers that system, we’ve decided that this is the path to go down. The biggest problem with the driver is that it’s based upon the very old, and across the board very neglected db-lib interface. Sybase, Microsoft, and FreeTDS have all marked this interface as legacy and unsupported. Further down the track (especially if someone feels generous enough to provide this as a code contribution), QTDS may resurrect, rewritten with the ct-lib interface, but seeing as QODBC provides all the functionality we need this is an unlikely state of affairs.

Please feel free to discuss, we are listening, and would like your opinions on this matter.

Do you like this? Share it
Share on LinkedInGoogle+Share on FacebookTweet about this on Twitter

Posted in News, Qt, SQL

8 comments

David Ching says:

Can you comment on how much performance is lost when using ODBC vs. TDS? In the Microsoft world, ODBC is considered ancient and not to be used except as a last resort (ADO, DAO, etc. are all preferred to ODBC).

Thanks,
David

P.S. Can you tone down your capcha’s? They are very hard to read and require several attempts before getting it right.

Bill King says:

As we are a cross platform toolkit, ADO, OLEDB and DAO all can not be considered first party solutions for connecting to TDS databases. ODBC via all three groups, is receiving constantly updated drivers, which means that despite the ODBC protocol and API’s being venerable, they are also kept up to date via updated drivers. I hope this goes a way to explaining the choice of solution.

As to performance figures, I’ll work those up and get back to you. They will have to be upon windows only tho as windows is currently the only platform with a full passing test-suite on TDS.

Re the captchas, sorry, out of my hands, contact the site admins maybe?

Hope this helps,
Bill.

SABROG says:

I try using QTDS in 2009 with MinGW but partially succesfully. – http://www.forum.crossplatform.ru/index.php?showtopic=3049

FreeTDS not dead project, last change in CVS – Mon Feb 8 16:12:35 2010 ( http://freetds.cvs.sourceforge.net/viewvc/freetds/freetds/ChangeLog?view=log )

This driver used in *nix systems with PHP scripts on web servers. What we must use in *nix instead FreeTDS? Buy another one server but with Windows?

And what about customers? For work through ODBC/unixODBC we must configure it to start, add DSN etc. If imagine what i customer, i would not (and may be don’t know how) personally configure ODBC service. Just qmake && make release, type login and password and work.

scorp1us says:

I would suggest investigating FreeDTS, but if you could, provide the native drivers (a problem for SQLServer from a Unix host?)

SABROG: You just go under control panel, Administrative Tools: Data Sources (ODBC) and add a USER DSN there, or if you’re running as a service, a system DSN. Select the driver, then the additional database info.

wrosecrans says:

I’ve long given up on the TDS driver when my app is running under Windows, but IIRC, the FreeTDS driver works great on Linux. (It’s actually been a really long time since I tinkered with the QtSQL stuff in a significant way, so my memory is a touch hazy. What can I say, that part of the code still works!)

Everything in my Qt based Projects moved from 4.5 to 4.6 without any issues, but this would require some tinkering to make some of my old code work nicely on Linux under 4.7. So, the reccomended path would be to use QODBC under all platforms for TDS (MS SQL Server, etc.) access?

Bill King says:

@sabrog, as long as the driver is there, you can configure all your connection parameters in the connection string. Examples:
DRIVER={SQL SERVER};SERVER=xyz.com;DATABASE=testdb;PORT=1433
DRIVER={FreeTDS};SERVER=xyz.com;DATABASE=testdb;PORT=1433;UID=xxx;PWD=xxx;TDS_Version=8.0

@scorpius, this came about due to discussion with the FreeTDS guys πŸ™‚

@all FreeTDS has too many breakages. They’re focusing support on the odbc drivers themselves, and are not supporting the db-lib interfaces, there was discussion both on and off the bugtracker on this with them πŸ™‚ Not a light decision…

wrosecrans says:

Would it bo possible to turn QTDS into a sort of vestigial ODBC wrapper (maybe just until 4.8 or whatever as a transition) that uses the TDS API to basically generate an ODBC connection string like you give as an example?

Tim Wojtulewicz says:

I’ve tried the TDS driver against Sybase 15 in the last year or so, and I found it very very slow to the point that it was basically unusable for anything where performance mattered. This was on a Solaris 10 machine.

At the time I actually started working on a driver that used the Sybase CT Library, but had to stop working on it due to time constraints. It’s on gitorious, if anyone wants to take a look at it. http://gitorious.org/~timwoj/qt/timwoj-sybct-clone

Commenting closed.

Get started today with Qt Download now