Announcement and Discussions related to the Microsoft JDBC driver for SQL Server
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.
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.
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...
select p.id, p.name
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...
Hello we have not fixed the alias issue in this release. We will consider this for the future releases.
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:
Thank you for the feedback on query timeout.
We are considering improving the implementation in a future release.
--David Olix [SQL Server]
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
Hi Eduard, thank you for using Microsoft SQL Server JDBC driver. For issues like this you can post questions on our forum http://social.msdn.microsoft.com/Forums/en-US/sqldataaccess/threads
Or you can contact our support staff:
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.
Microsoft does allow you to redistribute JDBC driver. You have to register on our site http://msdn.microsoft.com/en-us/data/aa937724.aspx in order to redistribute. Please read the terms and condition when you register.
Hope this helps!
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
Misys Banking Services