We are using jTDS drivers for about an year. As of today, I can tell the following:
Pros:
- Smaller JAR.
- ResultSets are faster. Fetching is configurable.
- Caches huge results on disk (MS driver requires you to use slow bidirectional cursors or caches results on memory, yielding occasional OutOfMemoyErrors).
- Documentation is small but enough (MS driver documentation is spread in hundreds of MSDN pages).
- Better error reporting (always a nice SQLException, while MS driver sometimes gives ClassCastException or other RuntimeException).
- Open source.
Cons:
- Bad support, due to:
- Relatively small user base, giving bad community support.
- Not backed by a big company, so if you need some solution fast, you must hope the developers are available and willing to help (and remember they are not paid for answering forums messages).
- Because MS SQL Server protocol has many proprietary parts, MS can perform changes that break jTDS when you apply maintenance updates on the server.
- Not as up-to-date as the MS driver. When MS launches a new SQL Server version, the JDBC drivers are usually released together. jTDS must work to catch up and that may take months.