Preview the new Microsoft JDBC Driver 6.0 for SQL Server


Today, we are pleased to announce the availability of the Community Technology Preview (CTP) of the Microsoft JDBC 6.0 Driver for SQL Server! This new driver now supports Always Encrypted, Internationalized Domain Names, Parameterized Queries, and is fully compliant with JDBC specifications 4.1 and 4.2.

To read the full release communication, you can click here.

JDBC Driver Version

JRE Versions

JDBC API Version

6.0

1.5, 1.6, 1.7, 1.8

3.0, 4.0, 4.1, 4.2

The driver can be downloaded from the Microsoft Download Center.

For additional details, check out the SQL Server Developer Center.

We are continuing to work on more exciting features. Please stay tuned for future announcements.

Andrea Lam (andrela@microsoft.com)

Comments (25)

  1. Adam Machanic says:

    Still no bulk copy or TVP support? When are we going to get these? They are absolutely key for performance, scalability, and decent code.

  2. Joey D'Antoni says:

    TVP support is an absolute necessity. I'm working with a client who's trying to do a migration from Oracle, is this is a blocker.

  3. @Adam, I just did some checking and it seems that they did add support for Bulk Copy in v 4.2. There is documentation ( msdn.microsoft.com/.../mt221490.aspx ) and an announcement of it ( msdn.microsoft.com/.../aa342325.aspx ). But yeah, sadly still no support for TVPs 🙁

  4. Rajesh Ag says:

    How can we push BLOB & CLOB data (more than 8K in size) from Oracle to SQL Server using the new SQLServerBulkCopy class introduced in ver 4.2?

  5. Rajesh Ag says:

    The current version of JDBC 4.2 is not working with JRE 6 and 7, though as per the documentation it should. By when we can except a version which supports JRE 6,7 and 8?

  6. Andrea Lam says:

    @Adam, as Solomon mentioned, Bulk Copy support was added in v4.2. This feature is also available in this preview driver.

    We know that TVP support is important and it is currently in the works for our upcoming releases.

    Thanks,

    Andrea Lam

    Program Manager

  7. Paul says:

    Disappointed with not seeing TVP support too.

  8. Rajesh Ag says:

    Can someone please revert back to the queries raised by me.

  9. Brett.Wooldridge says:

    Hello JDBC Team,

    I am the principal developer of HikariCP (github.com/.../HikariCP), the fastest growing connection pool for Java.

    We frequently are asked to implement PreparedStatement caching within the pool, but our stance has always been and continues to be that caching belongs in the driver.  On behalf of our MS SQL Server users, I would like to request the implementation of PreparedStatement caching.

    A survey of the Top 5 databases (dzone.com/.../10-most-popular-db-engines-sql) leaves only SQL Server out without prepared statement caching.

    Ironically, SQL Server's JDBC driver has a property, disableStatementPooling, which defaults to *true. Only true is supported currently (setting to false will throw an exception).

    It was literally HikariCP's stand against placing responsibility of caching in the pool that prompted PostgreSQL to implement their very excellent solution (github.com/.../308).  

    The PostgreSQL implementation took one developer 3 days from start to finish.

    In this new Satya Nadella era, isn't this the time for Microsoft to prove that it can be just as agile as the open source databases?  The 6.0 Preview is the perfect chance to introduce this long needed feature.

    Regards,

    Brett Wooldridge

  10. Eric says:

    How about putting it Maven Central?

  11. Hà Lê says:

    I'm very disappointed too, waiting for TVP support 🙁

  12. the6campbells says:

    When will DatabaseMetadata.getTables properly support synonyms? Since SQL Server added support at the database level the client API support has been lacking.

  13. Peter Tran says:

    Any idea when the JDBC Driver 6.0 will be GA? It fixed an existing v4.2 bug that our test cases encountered. We would like to certify the MSFT JDBC driver for our product, but that's on-hold until v6.0 is officially released.

  14. Andrea Lam says:

    @Rajesh Ag: Can you please provide more details regarding JDBC Driver v4.2 not working with JRE 6, 7, and 8?

    @Brett Wooldridge: Thank you for your feedback. I agree with you that the PreparedStatement caching belongs to the client driver. We will review and prioritize this against other requests and move forward accordingly. I will update this thread when we have a more concrete plan.

    @the6campbells: We will review and prioritize the request. I will update you as we make progress.

    Thanks,

    Andrea Lam

    Program Manager

  15. Peter Tran says:

    @Andrea Lam - How do we open a bug report or support ticket against the Microsoft JDBC driver?

  16. John Lonergan says:

    Excited to see the BulkCopy support in the 4.2 driver however there is a remarkable absence of useful documentation for these new features.

    Will the documentation and example hole be resolved in 6?

    Background ...

    Re msdn.microsoft.com/.../mt221490(v=sql.110).aspx

    This page is the only documentation I can find on the new MsSql JDBC 4.2 extension Bulk Copy support.

    A number of API’s are mentioned but none of these API’s carry documentation (javadoc) and the web page I mentioned doesn’t compensate for this lack of javadoc.

    We expect comprehensive api documentation and example code for the following API’s

    - ISQLServerBulkRecord

    - SQLServerBulkCopy

    - SQLServerBulkCSVFileRecord

    At the moment one has to guess what the parameters on api’s are or mean and have to use trial and error to work out how to encode data so it works on these api’s. Has the code had debug symbols stripped- if so why??

    The dev community expect to see the sort of quality api doc and example code that one would find in a good open source project.

    It would be great to have a complete example of ISQLServerBulkRecord including examples of configuring that api for each (all) of the Java datatypes (a la JDBC PreparedStatement interface) vs the SqlServer RDB data types, including appropriate precision and scale, and how to encode data (eg to hex strings or anything else). Currently the best documentation how to use it is by decompiling SQLServerBulkCSVFileRecord and that only helps me for the types used in that utility - not good.

    Looking at the internal implementation of SQLServerBulkCSVFileRecord (a derivative of ISQLServerBulkRecord ) it seems there’s a lot of implicit knowledge required to make this stuff work.

    For instance the precision field of TIMESTAMP values is overridden set to 35 / for DATE and TIME types it’s hard coded to 20 – why is this the case? and how would someone else attempting to write an implementation of ISQLServerBulkRecord know that the magic number 35 or 20 ought to be used?

    Re ISQLServerBulkRecord

    - How do I send a java.sql.Timestamp value to the db, scale and precision to the various db date/time types

    - How do I send data from java Array[Byte] to a binary column

    - What about a string to an nvarchar col vs a string to an nvarchar(max) column

    Etc

  17. Compression says:

    On the wire compression would help in some use cases particularly bulk/batch transfers.

  18. Andrea Lam says:

    @Peter Tran: You can report a bug through the MS Connect tool (https://connect.microsoft.com/)

    @John Lonergan: Thank you for your feedback. Let me see what I can do to help provide more extensive documentation on the BulkCopy APIs.

    Thanks,

    Andrea Lam (andrela@microsoft.com)

    Program Manager

  19. Mike Noordermeer says:

    Any plans on fixes for two major issues holding us and the rest from the world from using the JDBC driver?

    1.) Provide an option to set the socket timeout. See the discussion at social.technet.microsoft.com/.../any-plans-to-add-socket-timeout-option-in-jdbc-driver

    The current implementation will lead to stuck threads on packet loss, which eventually kills your appserver. At least that was the case for 4.2, and I assume it is still the case for 6.0.

    2.) Use a proper license (MIT / Apache 2 / BSD)

    1. Andrea Lam says:

      Hi Mike,

      We have heard a number of users ask for this functionality. We are prioritizing this implementation against several other features. Please be on the look out for more announcements in the future. We hope to address this issue soon.

      Thanks,
      Andrea Lam
      Program Manager
      andrela@microsoft.com

  20. Andrew Bourgeois says:

    @Andrea Lam: the driver classes were compiled with the -target 1.8 flag so the classes have a major.minor version of 52.0 which makes them only usable in Java 8 runtimes.

  21. Lawrence Sim says:

    Any chance we could get (https://connect.microsoft.com/SQLServer/feedback/details/2280301) fixed? It locks up the DBMS :-(.

    1. Andrea Lam says:

      Hi Lawrence,

      We have fixed this issue in the JDBC 6.0 RTW release. Please check out the MS Download Center to get the newest version of the 6.0 driver (https://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774).

      Thanks,
      Andrea Lam
      Program Manager
      andrela@microsoft.com

  22. Doesn't seem to represent any monetisable intellectual property? Might even result in a more complete product.

    1. Andrea Lam says:

      Hi John,

      This is definitely something to consider. We are working on some exciting things in our subsequent releases. Please stay tuned for further announcements.

      Thanks,
      Andrea Lam
      Program Manager
      andrela@microsoft.com

Skip to main content