First published on MSDN on Jul 20, 2018
Hi all,
We are excited to announce the production ready release for the
Microsoft Drivers 5.3.0 for PHP for SQL Server
. The driver enables access to SQL Server, Azure SQL Database, Azure SQL Managed Instance, and Azure SQL DW from PHP 7.0-7.2 applications on Linux, Windows and macOS.
Notable items about the 5.3.0 release since 5.2.0:
Added
-
Added support for Azure Key Vault for Always Encrypted functionality. Always Encrypted functionality is supported on Linux and macOS through Azure Key Vault
-
Added support for connection resiliency on Linux and macOS (requires version 17.2 or higher of the
ODBC driver
)
-
Added support for macOS High Sierra (requires version 17 or higher of the
ODBC driver
)
-
Added support for Ubuntu 18.04 (requires version 17.2 or higher of the
ODBC driver
)
Fixed
-
Issue
#577
- Idle Connection Resiliency doesn't work with Column Encryption enabled connections (fixed in MS ODBC Driver 17.1)
-
Issue
#678
- Idle Connection Resiliency doesn't work with Connection Pooling (fixed in MS ODBC Driver 17.1)
-
Issue
#699
- Binding output parameters fails when the query in the stored procedure returns no data. The test case has been added to the test lab.
-
Issue
#705
- Always Encrypted - Retrieving a negative decimal value (edge case) as output parameter causes truncation
-
Issue
#706
- Always Encrypted - Cannot insert double with precision and scale (38, 38)
-
Issue
#707
- Always Encrypted - 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 so 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 truncation 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 connecting will not work
-
Always Encrypted requires
MS ODBC Driver 17+
-
Only Windows Certificate Store and Azure Key Vault are supported. Custom Keystores are not supported
-
Issue
#716
- With Always Encrypted enabled, named parameters in subqueries are not supported
-
Always Encrypted limitations
Known Issues
-
Connection pooling on Linux or macOS is 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 diagnostic 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 driver by taking our pulse survey:
https://aka.ms/mssqlphpsurvey
Get Started
Direct downloads can be found on the
Microsoft website
or the
Github release tag
.
David Engel