Announcement and Discussions related to the Microsoft JDBC driver for SQL Server
Dear SQL Server developers and users:
As a follow up to my last post regarding the next release of our JDBC driver called the Microsoft JDBC Driver 4.0 for SQL Server, I am very pleased to announce the availability of our first community technology preview (CTP).
This release includes:
- Type-4 Kerberos Integrated Security
o Support for authentication via TGT in cache
o Login configuration file support
- Client side support for SQL Server AlwaysOn Feature for Denali
o Support for multi-subnet failover for AlwaysOn
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 – SQL Server/JDBC
Thanks for the update. Almost a year ago I posted the following comment:
"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:
Has this been addressed? If so, this is a major issue for us and would definitely be a reason to start testing and using this release.
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
@Christiaan: Thank you for your feedback. We have added it in our list of future improvements. It didnt make it in this release but it is definitely on our radar.
@Sameer: We have fixed getSCema bug in JDBC 3.0. You can download QFE from our support site:
We will port this QFE in JDBC 4.0 as well. it is not part of this CTP though.
Thanks for your comments!
How about passing TVP to SQL stored procs from Java? Did that make this release?
Sorry TVP did not make it in this this release.
Does "Type-4 Kerberos Integrated Security" translate to Type-4 support on non-windows clients ? Meaning a non-windows client can use Type-4 Integrated Security , ie windows authentication .. ? The current MS driver does not support this so it has only limited Type-4 support.
Thanks for your response. I have been facing an issue when I am trying to use any JDBC API or a JDBC tool like SQL Workbench to execute MERGE statement. It throws an error telling semi-colon is mandatory. I get this even if I have terminated the statement with a semicolon. It seems JDBC takes semi-colons as a deliminator and executes each query one by one after removing the deliminator. I do not know if this implementation lies with
I have tried putting ;; to escape it but it does not help. Though while preparing a prepared stateement I can prepare my own statement and in the string I can put a semicolon. But how can I do that in a tool like SQL Workbench, or how can I use a JDBC based java program to read and execute a script which has a merge statement some where in between.
Misys Indiahow can
I have tried with the latest jdbc and jdbc 3.0 as well and the issue with schema listing still persists. :(
Also, I am facing an issue with decimal string formatting. It seems you guys have implemented math.bigDecimal.toString() while implementing inputString interface for readDecimal method. This gives an issue whenever I try to fetch decimal column of precision greater than 6. I get a value 4E-7 etc. Can you provide a connection property to choose between toString() or toPlainString() [which would have shown me 0.0000004 instead of 4E-7]? IBM has done that recently in DB2 LUW release 9.7. Or if you can use toPlainString() in general instead of toString()? I guess Oracle does that only.
I hope to see a positive response on both the issues and also on the issue I had posted previously.
I have been using the MS JDBC 4.0 driver to connect my java application (JRE6) to Windows Azure DB.
I get the below error during specific operations.
No Dialect mapping for JDBC type: -9; nested exception is org.hibernate.MappingException: No Dialect mapping for JDBC type: -9
I can see that a similar reason for the same error message was flagged as an short coming in MS JDBC 3.0 and to be fixed in V4.0
Can someone help me out on this issue and what could be the possible solution for the same.
I hope to get a solution on this.
Thanks in advance!
I have long been a supporter of SQL Server as an excellent choice for most enterprise software database requirements.
But Microsoft's consistent treatment of Java developers as second class systems has made this increasingly difficult. Whether it's egregious bugs, poor performance (e.g. the new-thread-per-timeout-call issue), or just lagging for years behind the curve (e.g. TVPs), the performance here is so disappointing I just cannot stand behind you guys anymore.
I hope this situation improves in the near future.
@Daveg, thank you for your feedback. Trust me when I say we are not treating Java developers as second class systems. We are heavily investing in our JDBC driver. Both query timeout and TVP have been on our books and we have plans to address them as soon as we can. What other performance issues have you seen with your driver?
@Nivedittan, are you running your application on Windows Azure and connecting to SQL Azure or your application is running locally and connecting to SQL Azure?
@Jeff, yes JDBC 4.0 type-4 integrated security feature is supported on non-windows clients as well.
@ Sameer, I will follow up on these two issues you posted. if you want to get faster response, you can post these issues on our forum. Product team and support team regularly monitor our forums for any JDBC related issues.
Why do we still not have TVP or BulkCopy support in this driver?!? Do you think that Java developers don't work with large sets of data? This is a huge functionality hole and needs to be addressed. If you wonder why Java developers think SQL Server can't scale, look no further than your failure to support major performance features that have been implemented in ADO.NET SqlClient for years. A truly sad state of affairs.