Microsoft SQL Server JDBC 3.0 CTP Release Announcement

Dear SQL Server developers and users:

On behalf of Microsoft SQL Server JDBC team I would like thank you for the valuable feedback and support on our Microsoft SQL Server JDBC driver. In response to your feedback since last year’s release of the Microsoft SQL Server 2.0 JDBC Driver, we are excited to announce the release of the Microsoft SQL Server JDBC Driver 3.0 Community Technology Preview (CTP), now available at the Microsoft Download Center. We have been hard at work on what you requested most, including support for the following features introduced in SQL Server 2008:

·        Time and Date Data Types

·        Sparse Columns

·        MERGE (Transact-SQL) statement

·        Large User-Defined Types (UDTs)

We have also fixed some bugs and made some performance improvements along the way.

Let us know how we’re doing and give us your feedback through the Microsoft SQL Server Data Access Forum, Microsoft Connect, or this blog.


Thank you,

Amina Saify, Program Manager - JDBC


Below is a high level overview of what’s new in this release:

1.  Time and Date Data Types

We have added support for the following SQL Server data types – time, date, datetime2 and datetimeoffset

We are working on our next blog post which will go into details of Time and Date datatypes.

2.  Sparse Columns

Sparse columns are ordinary columns that have an optimized storage for null values at the cost of more overhead to retrieve non-null values. Consider using sparse columns when the space saved is at least 20 percent to 40 percent.

The DatabaseMetaData methods: getColumns, getFunctionColumns, and getProcedureColumns now return information about whether a column is sparse as well as information about the column set column.

For additional information, see the Sparse Columns page of the documentation.

3.  Large User-Defined Types (UDTs)

This release supports handling CLR User-Defined Types (UDTs) that are larger than 8000 bytes as binary data. 

4.  MERGE (Transact-SQL) Statement

We have added support for the MERGE (Transact-SQL) statement. The executeUpdate and getUpdateCount methods now return the correct number of rows updated for a MERGE statement.

For additional information about limitations retrieving the metadata of a parameterized query that includes a MERGE statement, see the driver release notes.

5.  Metadata Enhancements

We have extended the metadata support to include the new data types introduced in SQL Server 2008.

a)  Sparse columns information has been added to include sparse column

b)  New date time metadata

Furthermore there are some minor changes from the 2.0 driver in the way some data types are reported.

6.  Wrapper Interface Support

We have introduced interfaces that you can use with the unwrap and isWrapperFor methods of the Wrapper interface to implement classes that can proxy driver extensions to your applications.

Comments (9)
  1. Stas Kroo says:

    Mr. Rob Fellows wrote last year:


    There is still a bug with the driver and the getPareameterMetaData call when the query in question contains an aliased table that has a column that needs to be set to a parameter…



    from person p

    where p.age = ?

    the java code…

    PreparedStatement ps = conn.prepareStatement(sql);

    ps.getParamterMetaData();  // THIS THROWS AN EXCEPTION


    Unfortunately, this bug takes place in 3.0 version also…

  2. Mugunthan Mugundan- MSFT says:

    Hello we have not fixed the alias issue in this release. We will consider this for the future releases.


  3. Christiaan says:


    could you please consider a better implementation for PreparedStatement.setQueryTimeOut(). Each time a statement is executed, a new Thread is created (SQLServerStatement.StmtExecCmd.startResponse()), likely causing many thousands of threads to be created when an application is running. Appearently, garbage collecting has a hard time collecting these threads causing a performance bottle neck (not to say major debugging issues).

    This is also mentioned in:

  4. dpblogs says:

    Hi Cristiaan,

    Thank you for the feedback on query timeout.

    We are considering improving the implementation in a future release.


    –David Olix [SQL Server]

  5. eduard_02e says:

    with netbeans 6.8 wizard I can populate the database but when I display the page I created with netbeans by "JSF from entity classes" gives me error I put down the errors that are outside

    I can create the entity of the database unit persostencia also like the JSF from entity classes and run the Web project and all good

    but I get this exception: javax.ejb.EJBException

    and gives me this error:

    Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services – 2.0.0.v20091127-r5931): org.eclipse.persistence.exceptions.DatabaseExceptionInternal Exception: java.sql.SQLException: Error in allocating a connection. Cause: Connection could not be allocated because: La versión de servidor no es compatible. El servidor de destino debe ser SQL Server 2000 o posterior.

    can anyone help me please

  6. amisaify says:

    Hi Eduard, thank you for using Microsoft SQL Server JDBC driver. For issues like this you can post questions on our forum

    Or you can contact our support staff:;en-us;select&target=assistance



  7. lynx says:

    Has there ever been any thought behind changing the licensing terms behind this JDBC driver?  My understanding of the following term makes me certain we cannot make the JDBC driver available in a Maven repository even for an open source project:

    "You may not…. publish the software for others to copy;".  Since Microsoft does not seem to make the drivers available in any Maven repo’s we basically have to include a README asking builders to come download the driver directly.  I suspect the above licensing term is there to prevent an entirely different scenario than the one I’m describing.

    If you’re not familiar with Maven builds, they are based on the idea of repositories, one describes what resources their project needs and the build process goes out to grab them out of external repositories.  It is customary for folks who maintain a large project to also maintain a small repository for any resources that are not available in the common repositories (e.g. this driver).  However we cannot do that in this case.

  8. Amina Saify says:

    Hi Lynx,

    Microsoft does allow you to redistribute JDBC driver. You have to register on our site in order to redistribute. Please read the terms and condition when you register.

    Hope this helps!


  9. Sameer Kumar says:


    I have been using SQL Server 2008 R2 for last 6 months. It seems the call to JDBC function getSchema/listSchema does not return the schema names and still refers to user names/roles. While using a JDBC tool to access the database I do not get to see a schemas, if I do not have a user of corresponding name. I think SQL Server 2005 onwards MIcrosoft's SQL Server dev team has disintegrated the coupling between Schema and user, the same needs to be done for JDBC as well.

    Thanks and Regards

    Sameer Kumar

    Database Administrator

    Misys Banking Services

Comments are closed.

Skip to main content