With excitement, we announce the technical preview for SQLSRV and PDO_SQLSRV drivers that support basic CRUD functionalities with the Always Encrypted feature for Windows, Linux and macOS. Both drivers have been built with PHP 7.0+ and tested on all supported platforms (Windows, Ubuntu 16.04 and 17.10, RedHat 7, Debian 8 and 9, Suse 12, and macOS 10.11, 10.12, and 10.13).
Notable items about the 5.2.1-preview release,
Added
- Added support for Azure Key Vault for Always Encrypted for basic CRUD functionalities such that Always Encrypted feature is also available to Linux or macOS users
- Added support for macOS High Sierra (requires MS ODBC Driver 17+)
Fixed
- Issue #577 - Idle Connection Resiliency doesn't work with Column Encryption enabled connection
- Issue #678 - Idle Connection Resiliency doesn't work with Connection Pooling bug
- Issue #699 - Binding output parameter failed when the query in the stored procedure returned no data. The test case has been added to the test lab.
- Issue #705 - AE - Retrieving a negative decimal value (edge case) as output parameter causes truncation
- Issue #706 - AE - Cannot insert double with precision and scale (38, 38)
- Issue #707 - AE - Fetching decimals / numerics as output parameters bound to PDO::PARAM_BOOL or PDO::PARAM_INT returns floats, not integers
- Issue #735 - Extended the buffer size for PDO lastInsertId such that data types other than integers can be supported
- Pull Request #759 - Removed the limitation of binding a binary as inout param as PDO::PARAM_STR with SQLSRV_ENCODING_BINARY
- Pull Request #775 - Fixed the problem for output params with SQL types specified as SQLSRV_SQLTYPE_DECIMAL or SQLSRV_SQLTYPE_NUMERIC
Limitations
- No support for inout / output params when using sql_variant type
- In Linux and macOS, setlocale() only takes effect if it is invoked before the first connection. Attempting to set the locale after connection will not work
- Always Encrypted feature, which requires MS ODBC Driver 17+
- only Windows Certificate Store and Azure Key Vault are supported
- Issue #716 - With Always Encrypted feature enabled, Named Parameters in Sub Queries are not supported
- Always Encrypted limitations
Known Issues
- Connection pooling on Linux or macOS not recommended with unixODBC < 2.3.6
- When pooling is enabled in Linux or macOS
- unixODBC <= 2.3.4 (Linux and macOS) might not return proper diagnostics information, such as error messages, warnings and informative messages
- due to this unixODBC bug, fetch large data (such as xml, binary) as streams as a workaround. See the examples here
- With ColumnEncryption enabled, calling stored procedures with XML parameters does not work (Issue #674)
Survey
Let us know how we are doing and how you use our drivers by taking our pulse survey:
Install
- On Linux and macOS run the commands below:
sudo pecl install sqlsrv-5.2.1preview
sudo pecl install pdo_sqlsrv-5.2.1preview
- Download Windows DLLs from SQLSRV or PDO_SQLSRV PECL repository.