Skip to content

JDBC Survey Results

ulvii edited this page Aug 5, 2020 · 11 revisions

JDBC Driver for SQL Server - Sentiment Survey

Results from the survey published on Oct 30, 2019 and closed on Aug 4, 2020.

Number of Respondents: 61

All questions below allowed multiple answers. As a result, %s in results below do not always total 100%.

How likely are you to recommend the JDBC Driver for SQL Server to a friend or colleague?

Average number: 7.02

What are the most important features you would like to see implemented in the driver?

Answer Results
Asynchronous JDBC or R2DBC. 27.5%
Remove extra metadata lookup when using CallableStatement with named parameters. 21.25%
Multi Factor Authentication. 17.5%
Channel binding (for extended protection and encrypted connections). 11.25%
Additional spatial data type support. 8.75%
GetGeneratedKeys support when using Identity and jdbc batch inserts. 1.25%
Azure Key Vault authentication with MSI 1.25%

What version(s) of Java do your applications use?

Answer Choice Results
Java 8 47.5%
Java 11 33.75%
Java 13 10%
Java 7 5%
Java 6 5%

What operating system do you primarily use?

Answer Choice Results
Windows 37.7%
Ubuntu 21%
RedHat 12.3%
Debian 9.7%
MacOS 7.9%
SUSE 3.5%
Other 7.9%

What version of SQL Server does your Java application connect to?

Answer Choice Results
SQL Server 2017 19.2%
SQL Server 2016 15.2%
SQL Server 2019 14.4%
Azure SQL Database 12%
SQL Server 2012 11.2%
SQL Server 2008R2 or older 11.2%
SQL Server 2014 9.6%
Azure SQL Data Warehouse 4%
Azure SQL Managed Instance 3.2%

JDBC Driver for SQL Server - Sentiment Survey

Results from the survey published on Nov 30, 2018 and closed on Oct 16, 2019.

Number of Respondents: 30

All questions below allowed multiple answers. As a result, %s in results below do not always total 100%.

How likely are you to recommend the JDBC Driver for SQL Server to a friend or colleague?

Average number: 8

If you rated us less than 10, what changes would you like to see to consider giving us a higher rating?

Answer
The driver does not have the functionality exposed by the respective .NET driver especially in the SQL BulkLogged API.
Performance.
A module-info file in the root to build distributables.
Focus on stability and performance against Azure SQL server.
Include documentation on how to configure the driver in Spring-boot applications.
Fixing known bugs and regressions.
Struggles using the driver with jlink/JAVA module system.
JDBC API should be extended to include more modern features. If JDBC API is rigid then SQL Server specific functionalities should be added.

What do we do well?

Answer
The driver works fine and message are clear.
Responsive to issues, questions and PRs.
You open sourced jdbc driver (kudos for that) and development is pretty fast.
Updates and Development.
Timeliness of updates and fixes.
You released this opensource and on maven, good job.
The general cases works well.
Driver works very well, is frequently updated and support OSGi out-of-the-box.

What are the most important features you would like to see implemented in the driver?

Answer
SQL BulkLogged API.
Event interface for the purpose of statistics gathering.
Enhance support getting result sets from stored procedures lacking SET NOCOUNT ON.
JPMS Support.
Bulk copy support for Spatial data types.
Native connection pooling.
Implement Connection.getNextValueFor("SEQ_NAME").

What version(s) of Java do your applications use?

Answer Choice Results
Java 8 43.34%
Java 11 26.67%
Java 12 3.34%
Java 10 3.34%
Java 9 3.34%
Java 6 3.34%

What operating system do you primarily use in Development?

Answer Choice Results
Windows 63.34%
RedHat 13.34%
Ubuntu 3.34%
MacOS 3.34%

What operating system do you primarily use in Production?

Answer Choice Results
Windows 53.34%
RedHat 20%
Ubuntu 6.67%
Alpine Linux Docker 3.34%

What version of SQL Server does your Java application connect to?

Answer Choice Results
SQL Server 2017 40%
SQL Server 2016 36.67%
SQL Server 2012 30%
SQL Server 2014 20%
SQL Server 2008R2 16.67%
Azure SQL Database 13.34%
SQL Server 2008 or older 10%

JDBC Driver for SQL Server - Pulse Survey

Results from the survey published on Feb 23, 2017 and closed on March 14, 2017.

Number of Respondents: 45

All questions below allowed multiple answers. As a result, %s in results below do not always total 100%.

What is your build system of choice?

Answer Choice Results
Maven 73.33%
Gradle 28.89%
Ant 6.67%

How do you obtain the JDBC driver?

Answer Choice Results
Download jar or add as dependency from Maven Central 86.67%
Download jar from Microsoft Download Center 13.33%
Download jar from GitHub 13.33%

What version(s) of Java do your applications use?

Answer Choice Results
Java 8 95.56%
Java 7 28.89%
Java 9 6.67%
Java 6 4.44%

What type of JVM do you use?

Answer Choice Results
Oracle JVM 88.89%
OpenJDK 37.78%
IBM JVM 4.44%
IcedTeam 2.22%
Azul 2.22%

What operating system do you use with Java?

Answer Choice Results
Windows 10 54.55%
Ubuntu 16.04 45.45%
Windows 7 29.55%
Red Hat Enterprise Linux 7/CentOS 7 28.89%
macOS Sierra 22.73%
Red Hat Enterprise Linux 6/CentOS 6 20.45%
Ubuntu 16.10 (Preview) 13.64%
Windows Server 2012 8.89%
Ubuntu 15.10 4.55%
SUSE Enterprise Linux 12 4.55%
OS X El Capitan 4.55%
Ubuntu 14.04 2.22%
Windows Server 2016 2.22%
Windows Server 2008R2 2.22%
Azure App Server (Windows) 2.22%
Arch Linux 2.22%
OpenSolaris 11 2.22%
openSUSE Leap/Tumbleweed 2.22%

What version of SQL Server does your Java application connect to?

Answer Choice Results
SQL Server 2016 62.22%
SQL Server 2012 44.44%
SQL Server 2014 44.44%
SQL Server 2008R2 37.78%
SQL Server 2008 17.78%
Azure SQL Database 17.78%
SQL Server 2005 11.11%
SQL Server vNext (2017) 6.67%
Azure SQL Data Warehouse 4.44%

JDBC Driver for SQL Server - Developer Survey

Results from the survey published on March 13, 2017 and closed on April 7, 2017.

Number of Respondents: 21

All questions below allowed multiple answers. As a result, %s in results below do not always total 100%.

What types of getting started resources do you find most helpful?

Answer Choice Results
Code-level examples and walk-throughs 90.48%
Official documentation 57.14%
JavaDocs 19.05%
Short animations demonstrating product features 9.52%
Video demonstrations 9.52%
Tutorial within the tool/IDE you currently use 9.52%
I don't need any help 4.75%

What editors and/or IDEs have you used as your primary editor in the last 3 months to create new Java applications?

Answer Choice Results
Eclipse 66.67%
IntelliJ IDEA 42.86%
Netbeans 23.81%
Notepad++ 14.29%
Visual Studio 9.52%
Android Studio 4.76%
Sublime Text 4.76%
Visual Studio Code 4.76%
Atom 4.76%

What tools do you use for continuous deployment and DevOps?

Answer Choice Results
Jenkins 88.24%
Docker 52.94%
Travis CI 17.65%
Flyaway 17.65%
Chef 11.76%
Amsible 5.88%
Team City 5.88%
Liquibase 5.88%

What frameworks have you used?

Answer Choice Results
Spring Boot 50.00%
Spring MVC 44.44%
GWT 22.22%
JSF 22.22%
Struts 2 11.11%
Wicket 11.11%
Play 1 5.56%
Dropwizard 5.56%
Apache Kafka 5.56%
Stripes 5.56%
RESTX 5.56%

What major features do you use in the JDBC driver?

Answer Choice Results
Bulk Copy 54.55%
Always Encrypted 36.36% (Additional comment: "We could not use Always Encrypted as it is not supported by ORMs")
Table-Valued Parameters 27.27%
Azure Active Directory Authentication 0.00%
Internationalized Domain Names 0.00%

On a scale of 1 (extremely dissatisfied) to 10 (extremely satisfied), how would you rate the JDBC Driver for SQL Server?

Average number: 7


JDBC Driver for SQL Server - Prioritization Survey

Results from the survey published on April 7, 2017 and closed on May 2, 2017.

Number of Respondents: 43

All questions below allowed multiple answers. As a result, %s in results below do not always total 100%.

What features/improvements would you like to see in the JDBC Driver for SQL Server? Please rank the options below.

Feature 1 2 3 4 5 Score
Multiple Active Result Sets 0 28.13% 21.88% 21.88% 28.13% 2.50
SQL Variant Data Type Support 6.25% 18.75% 12.50% 28.13% 34.38% 2.34
Idle Connection Resiliency 3.13% 31.25 % 43.75% 15.63% 6.25% 3.09
Bug fixes for issues reported 42.86% 25.71% 14.29% 11.43% 5.71% 3.89
Other 64.71% 5.88% 0.00% 14.71% 14.71% 3.91

If you answered, "Other" to the question above (Q1), what would you like us to prioritize?

Answer Responses
Fix issue #244 25
Performance - cache prepared statements 2
Kerberos support 1
SocketTimeOut / Query Timeout 1

On a scale of 1 (extremely dissatisfied) to 10 (extremely satisfied), how would you rate the JDBC Driver for SQL Server?

Average number: 7


JDBC Driver for SQL Server - Sentiment Survey (May & June 2017)

Results from the survey published on May 2, 2017 and closed on June 30, 2017.

Number of Respondents: 45

How likely are you to recommend the JDBC Driver for SQL Server to a friend or colleague?

Average number: 7.55

What do we do well?

  • Performance, up-to-date with new SQL Server versions
  • You open sourced the driver!
    Code clean and nice!
    You guys rocks!
    1. Open sourced the driver.
      2. Got answers on issues raised in your GitHub Repo.
      3. Saw interesting conversations related to PRs.
      4. Publishing on Maven Repo
      5. Frequent releases on Maven. Especially frequency is good ~ monthly. (Daily will be nightmare. :) )
      6. Good CHANGELOG.

      Things should consider:
      1. JDK 9. OpenJDK. Your driver works on OpenJDK but better if you able to use JDK 9 specific features.
      2. Still supporting JDK 7 so you could not use stream api , process api, CompletableFuture APIs or lambdas which might be useful for your driver implementation
  • Transparency via open sourcing the driver
  • Performance and reliability have never been an issue.
  • Open source development, which makes it easier to debug production problems with SQL Server. Quick response on issues and questions.

What changes would you like to see to consider giving us a higher rating?

  • Improve performance. Driver level type mapping (notably between datetime2 <--> datetime)
  • Complete support for SQLServer's beautiful spatial datatypes and functions.
  • Implement more optional JDBC functionality. Improve performance.
  • Improve driver performance, as it still slower than JTDS
  • Performance
  • I really wish I could find a traditional JavaDoc for the project. I want to be able to see the method signatures, etc. in the way that is standard across essentially all Java projects. Perhaps it exists somewhere, but I haven't been able to find it after a few minutes of poking around on the Microsoft documentation link included with the project.
  • Failover when using peer-to-peer replication
  • SQL Variant type!!!!!!!!!
  • Some additional support in the drivers for Application Roles. Ideally something in the properties.
  • Stronger support/performance for ORM layers which are common in the Java community

JDBC Driver for SQL Server - Sentiment Survey (July & August 2017)

Results from the survey published on July 1, 2017 and closed on August 31, 2017.

Number of Respondents: 43

How likely are you to recommend the JDBC Driver for SQL Server to a friend or colleague?

Average number: 7.35

What do we do well?

  • Testing.
  • Open-sourcing code for ms sql server jdbc-drivers
    it'll make it much more simple to debug, troubleshoot and fix any possible bugs

What changes would you like to see to consider giving us a higher rating?

  • Performance
  • Fixing all reported leaks (e.g #308)
    Provide expected implementation of getObject() methods (#6)
    Provide a decent implementation of getGeneratedKeys() (#245)
    Finally, this is the only JDBC driver that I know that does not cache the PreparedStatement (#166)
  • A Microsoft product doesn't support NTLM out of the box. Whut? >A closed-source DLL is required to make NTLM work, but its not multi-platform, and our Java services are running on Linux VMs.I've tried your Kerberos implementation, but I found it impossible to configure correctly for cross-domain authentication.
  • Performance of other drivers, such as the Merlia driver from INetsoft.de, can be significantly higher than the MS driver.
  • Improve more the performance.
  • If the JDBC batch inserts would use the SQL Bulk Copy api automatically when performing batch operations, this would be very convenient. As this would prevent the need to use a separate non-standard JDBC api to efficiently load data. Also, for the existing SQLBulkCopy API, the interface on ISQLBulkRecord for the method, getColumnOrdinals() should return a SortedSet not just a Set, as it turns out the driver code in SQLBulkCopy expects the set of columnOrdinals to be an ordered set, and this is not explicit in the interface just returning a Set as a set is unordered (this is a minor thing, but it was a source of confusion for a little while when implementing a ISQLBulkRecord instance, until reading through the source code of the SQLBulkCopy class).
  • Improved performance (especially batch inserts)
    - Bug fixes
    - Improved error messages, exception handling
  • I can connect to our SQL Server if I use kinit -k -t /path/to/keyTab principle@DOMAIN.UW.EDU before I run my java code or tomcat application. I would like to use the keyTab directly so that the code can make a kerberos connection with out having a ticket cached.
  • More visibility on performance improvements.
  • Supporting NTLM authentication without an additional DLL. Our Java servers are Linux-based, and the DLL required is Windows-only.
  • A focus on performance to offset the recent issues exposed on github (e.g. #166). Lack of understanding how most Java application drive prepared statements throughout the industry is quite telling.
  • Performance when compared to jtds.
  • support for RSASSA-PSS certs and get started on TLS 1.3
  • Better performance, cleaner code.
  • PreparedStatement caching/optimisations for ORMs
  • complete some features that is not present now
    and add driver for ssas service
  • Increase Performance
    Bundle the .dll file for integrated security and automatically load it, if appropriate.

JDBC Driver for SQL Server - Sentiment Survey (September 2017)

Results from the survey published on September 1, 2017 and closed on September 30, 2017.

Number of Respondents: 17

How likely are you to recommend the JDBC Driver for SQL Server to a friend or colleague?

Average number: 8.17

What do we do well?

  • Really love the new MIT license and responsiveness on GitHub. The license is very useful to reverse engineer some of the internals, e.g. to learn how TVP are to be used, etc.
  • transparency, responsiveness
  • Drivers look stable and work reliably, I like the fact they've been open sourced.
  • Making driver MIT is helping to distribute and fix issues without license/IP concerns

What changes would you like to see to consider giving us a higher rating?

  • Ongoing support for Java 7
  • Rewrite the driver to use Netty http://netty.io
  • Can you give Gradle support. You are getting paid for not being ugly, retarded and lazy programmers.
  • Please list the differences in jre7 and jre8 artifact variations. Why use one vs the other, etc. ? Thanks.
  • Fix Github Issues + Pull Requests
  • Improve SQLBlobStream and PLPInputStream documentation. I'm having a lot of trouble streaming large data from SQL Server, always getting OutOfMemory exceptions and GC overhead.
  • Rewrite the driver using XNIO.

JDBC Driver for SQL Server - Sentiment Survey (Feb - March 2018)

Results from the survey published on February 1, 2018 and closed on March 31, 2018.

Number of Respondents: 18

How likely are you to recommend the JDBC Driver for SQL Server to a friend or colleague?

Average number: 7

What do we do well?

  • Quick feedback on bugs and questions
  • GitHub development.
  • Open source is a very nice option.
  • Support for high availability
  • MIT-License, Up-to-date with jre9
  • Great license, Open Source, GitHub
  • Release frequency, release documentation, issue management

What changes would you like to see to consider giving us a higher rating?

  • More relevant error messages, particularly from Bulk Copy features.
  • Mapping of date and time fields in Bulk Copy is unreliable.
  • Make a better code. For example, when you create a TimeoutTimer (mssql-jdbc-TimeoutTimer) you never shutdown the scheduler. So, for example, every time you stop the tomcat, you get an exception!
  • More Performance, Other Drivers handles Query faster.
  • Better compatibility with old JTDS. We have a few products that break when trying to switch to this.
  • Like to see some perf results. Not fully OSGI compilant but still happy to see OSGI headers.
  • Old versions would be nice.
  • I would love to be able to enter SQL server issues the same way as it is possible with the JDBC driver. Basically there is zero feedback about SQL server issues. E.g. SQL server 2017 has performance problems in certain scenarios. We entered a bug, but there is zero information about the progress or if the bug is actually worked on.

What are the most important features you would like to see implemented in the driver?

  • Java 10 is nearly here but the driver is not yet Java 9 compatible. This blocks lots of our apps migration to Java 9 :(
  • AKV
  • Clustering
  • Improved performance - especially with PreparedStatements
  • New feature? None. As mentioned earlier, more relevant error messages in exceptions. For example, tell me the row and column number at which a conversion error occurred during a Bulk Copy.

What version of Java do you use in Production?

  • Java 7 Users: 1
  • Java 8 Users: 15
  • Java 9 Users: 1

What operating system do you primarily use in Production?

  • Windows Users: 8
  • CentOS/RedHat/Ubuntu Users: 8
  • Debian User: 1
Clone this wiki locally