ODBC DM 3.80 in Windows 7 and Windows Server 2008 R2

We’re excited to announce that version 3.8 of the Microsoft ODBC DM (Driver Manager) will be released in Windows 7 and Windows Server 2008 R2.

What’s New In Version 3.80?

Compared to ODBC 3.5x, there are four major improvements in ODBC 3.80.

Streamed Output Parameters

In ODBC 3.5x, applications can only use SQLBindParameter to bind a buffer to an output parameter of a stored procedure. When working with large BLOB data objects, such as images, allocating an extremely large buffer may not be possible. ODBC 3.80 allows applications to retrieve BLOB output parameters in parts via SQLGetData.

ODBC C-Type Extensibility

The list of valid C-Types defined in the ODBC specification is the same for all ODBC drivers. Typically, data store manufacturers create new data types for new scenarios or new customer needs. Applications usually use the generic C-type SQL_C_BINARY to work with these new data-source specific types. ODBC 3.80 allows driver manufacturers to define their own C-Types. This means that a driver can define its own client-side type conversion rule for its new driver-specific data type, and thus provide a better developer experience.

Asynchronous Connection Operation

Before ODBC 3.80, asynchronous mode was only supported on statement operations, such as SQLExecDirect and SQLGetData. We extend this support to connection operations, such as SQLDriverConnect and SQLEndTran. ODBC 3.80 also allows applications to cancel connection operations, just as with SQLCancel on statement operations.

Asynchronous connection operations can significantly improve the performance of many large-scale, mission-critical applications, given the same amount of resources. For example, assume that you want to populate 100 connections in the pool at the application startup time so that all subsequence requests can be more efficiently served. Suppose it takes 1 second to make a connection to a remote server. You may be able to make 100 connections within a few seconds with asynchronous mode in a single-threaded application, compared to 100 seconds with the previous model! Interactive applications that take advantage of this new feature could, for example, render a progress bar, and also cancel long-running connection operations easily.

Better Management In ODBC Connection Pooling

ODBC Drivers are now notified when the ODBC Driver Manager puts a connection into the connection pool. This was previously opaque to the driver. Upon receiving the signal from the Driver Manager (via a newly introduced connection attribute SQL_ATTR_RESET_CONNECTION), a driver can reset some of its attributes to their default states. This can provide a more consistent behavior to an application when it reuses a connection from the pool.

For more detail about each of the above new features, you can download the Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1: RC.

Why Update To Version 3.80?

Application compatibility was our highest priority when the ODBC 3.80 features were designed. Since the new features in ODBC 3.80 introduced new behavior, we upgraded the version to 3.80 from 3.5x (shipped on Windows Vista or Windows Server 2008). This guarantees that:

- Existing ODBC drivers and applications (ODBC 2.0 or ODBC 3.x) will still work properly under Windows 7 and Windows Server 2008 R2.

- ODBC 3.80 is optional for new development of drivers and applications.

When Can I Use These New Features?

For ODBC driver writers, the release candidates of Windows 7 and Windows Server 2008 R2 have these features. Try out the Win7 RC bits today!

For application developers, please read the SDK (link above) to better understand how these features may fit within your environment. At the moment, ODBC 3.80 drivers are not available; however, we are in contact with several driver vendors about supporting ODBC 3.80. Please work with your driver vendor to better understand their plan for ODBC 3.80 support.

 

Does SQLODBC Driver (Inside WDAC) Support ODBC 3.80?

No. SQLODBC is now in maintenance mode. Its sole purpose is for backward compatibility.

Pak-Ming Cheung

Microsoft Developer, WDAC team, Data Programmability