Hi all,
just some comments aiming to clarify a bit the status of both the FreeTDS (mssql) and Microsoft (sqlsrv) drivers.
A. First of all, let me state clearly that, both, right now (Moodle 2.5), continue being supported. And any problem with them, if not impossible, will be fixed.
B. Said that, it's true that current support level is better for both MySQL and PostgreSQL (call it "gold support", although I don't like the nomenclature specially). Then the SQL*Server ones (silver), and finally Oracle (plastic?).
C. There are various reasons for declaring both SQL*Servers a bit beyond the gold ones, all them with their influence, like:
- Number of installations aka number of reports.
- Stability of the underlying drivers.
- Fulfillment of the SQL standards.
- Proprietary (and paid) nature of the software (driver, rdbms, os...)
- ...
D. About MDL-37734, it is a really, really nasty limitation of the server itself (incredible I'd say if you ask me), but it has been already "solved by a workaround" in our sqlsrv driver (see MDL-37748). It surely implies memory use will grow a bit for each connection, but it was the only way to go.
And it's exactly the same workaround that FreeTDS has built-in since ages ago (so we did not need to change our mssql driver).
We are just asking to MS if they would apply the workaround to their driver (like FreeTDS did) instead of having it applied in our (php code) drivers. That would benefit any other application out there trying to handle transactions and recordsets at the same time (something really usual, IMO).
So, at all effects, it's fixed (for Moodle POV). And, that warning in the Docs (that I did not write) is completely inaccurate right now IMO.
More yet, if you want to know if the server is going to work ok in your stack, just run the unit test on it. It will show possible problems for sure. We try hard to add to the tests any query/combination prone to errors.
E. About comparing FreeTDS and MS drivers, well, for me the election is pretty clear. I'm a Mac and need to use FreeTDS (same applies to any non-windows system out there). For people using complete windows stacks I think it has more sense to use the MS driver. Although the TDS (Tabular Data Stream) protocol is stable and solid... it's not "native/original" from MS, but something inherited from Sybase and maybe deprecated some day (remark it's a maybe only).
F. Disclaimer: be noted that I'm not a Windows guy nor expert at all, so surely all you know way more which one performs and suit your needs better for your environments.
So, brief summary:
Both drivers are supported, slightly beyond mysql and postgres (btw, have you considered them?), the horrible problem in MDL-37734 is fixed and, as a general recommendation, be as "native" as you can when building server stacks.
Hope it helps, ciao
PS: David, many thanks for building the PHP5.5 versions of the FreeTDS driver for Windows. Would you mind if I copy them to the Moodle downloads server and link to that location? Mainly to provide a stable location for them and to know how popular it is. TIA!
PS2: I've get rid of the warning in the 23, 24 & 25 versions of the docs (where the MDL-37734 fix/workaround was applied).