We are pleased to announce the release of the Microsoft ODBC Driver 17 for SQL Server! The updated driver provides robust data access to Microsoft SQL Server and Microsoft Azure SQL Database for C/C++ based applications.
Always Encrypted support in Bulk Copy APIs
You can now use Always Encrypted with the Bulk Copy APIs in Microsoft ODBC Driver 17 for SQL Server. The SQL Server-specific bulk-copy (BCP) API extension of the Microsoft ODBC Driver for SQL Server allows client applications to rapidly add data rows to, or extract data rows from, a SQL Server table. Customers who want to take advantage of the Always Encrypted feature introduced in SQL Server 2016 and Azure SQL Database can now use the BCP API extensions against columns which use the Always Encrypted feature.
Support for Azure SQL Managed Instance (Extended Private Preview)
The driver has been certified for connecting to an Azure SQL Managed Instance (Extended Private Preview).
NOTE: There are certain limitations when running against an Azure SQL Managed Instance:
- FILESTREAM is not supported
- Local filesystem access is not supported, but required for things like tracefiles
- Create UDT from local path not supported
- Windows Integrated Authentication not supported
- DTC not supported
- 'sa' account is not present (default account is called 'cloudSA')
- TDS token ERROR (0xAA) returns incorrect server name
- Special characters in database name are not supported
- ALTER DATABASE [dbname1] MODIFY NAME = [dbname2] is not supported
- The error messages are always shown in English, regardless of language settings (same as Azure)
Character conversions between UTF-8 and UTF-16 in the driver have shown at least a 10x improvement. Additionally, performance has been improved when asynchronous execution mode is enabled.
Platform Version Support
New platform versions are supported including:
- Debian 9
- Ubuntu 17.10
- macOS High Sierra
This release also contains numerous fixes:
- Missing types and constants were added to Linux/Mac header (msodbcsql.h)
- CP1252 encoded files over 32MB were failing to import correctly with bcp on Linux
- Resolved an issue in Linux where system time changes could result in incorrect timeouts in the driver
- macOS - SQLGetInfo with SQL_DRIVER_NAME returns .so value instead of .dylib
- Parameters bound with any convertible C type with the same precision & scale as a numeric/decimal column are now correctly converted to the appropriate numeric type with the specified precision and scale, and execute successfully instead of erroring out with Operand Type Clash
- Screen reader usability improvements in DSN Wizard and Login Dialog
- Encrypted numeric/decimal values now correctly normalize negative zeros
- Hebrew data (varchar) is no longer chopped when returned as wide chars on Linux platforms
- Fixed Invalid Descriptor Index error when using unencrypted XML column with AE in some scenarios
- Fixed function sequence error when using DAE, SqlPutData, and AE
- ODBC Driver on Windows now links directly to secur32.dll, instead of indirectly through security.dll
- Fixed SQLGetData for encrypted varbinary(max) returned data only on first call
- Conversions to Persian collation in column scenarios appears to result in data corruption
- Data corruption when streaming UTF-16 or UTF-8 using SQLPutData with split octets or surrogate pairs
- With async notifications enabled, driver unable to recover from failure (Windows)
- High CPU consumption when ODBC async execution mode is enabled (Windows)
- Occasional crash during ODBC shutdown when async execution mode is enabled (Windows)
For Windows installations, you can download the Microsoft ODBC Driver 17 for SQL Server here.
Linux and macOS packages are also available. For installation details see the online instructions.
We are committed to improving quality and bringing more feature support for connecting to SQL Server, Azure SQL Database and Azure SQL DW through regular driver releases. We invite you to explore the latest the Microsoft Data Platform has to offer via a trial of Microsoft Azure SQL Database or by evaluating Microsoft SQL Server.