diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f11549b0f..28464418f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,26 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +## [Preview Release 2.1.0-preview2.20297.7] - 2020-10-23 + +### Added +- Added support for Azure Active Directory Managed Identity authentication [#730](https://github.com/dotnet/SqlClient/pull/730) +- Added support to provide a user-defined application client ID when using Active Directory authentication [#740](https://github.com/dotnet/SqlClient/pull/740) +- Added the "Command Timeout" connection string property to set a default timeout for all commands executed with the connection [#722](https://github.com/dotnet/SqlClient/pull/722) +- Added support for Always Encrypted on all supported platforms for .NET Standard 2.0 [#756](https://github.com/dotnet/SqlClient/pull/756) + +### Fixed +- Fixed unobserved exception issue when a timeout occurs before a faulted task completes with an exception [#688](https://github.com/dotnet/SqlClient/pull/688) [#773](https://github.com/dotnet/SqlClient/pull/773) +- Fixed an issue where driver continues to prompt for credentials when using Azure Active Directory authentication [#770](https://github.com/dotnet/SqlClient/pull/770) + +### Changes +- Updated `Microsoft.Data.SqlClient.SNI` (.NET Framework dependency) and `Microsoft.Data.SqlClient.SNI.runtime` (.NET Core/Standard dependency) version to `v2.1.1` and removed symbols from `Microsoft.Data.SqlClient.SNI.runtime`, which are now published to Microsoft Symbols Server [#764](https://github.com/dotnet/SqlClient/pull/764) +- Updated `Microsoft.Identity.Client` dependency version to `v4.21.1` [#765](https://github.com/dotnet/SqlClient/pull/765) +- Performance improvements when establishing an encrypted channel by removing sync over async method calls [#541](https://github.com/dotnet/SqlClient/pull/541) +- Performance improvements by replacing heap-allocated arrays with Spans [#667](https://github.com/dotnet/SqlClient/pull/667) +- Moved common files to shared folder between .NET Framework and .NET Core implementation [#734](https://github.com/dotnet/SqlClient/pull/734) [#753](https://github.com/dotnet/SqlClient/pull/753) + + ## [Stable Release 2.0.1] - 2020-08-25 ### Added diff --git a/release-notes/2.1/2.1.0-preview2.md b/release-notes/2.1/2.1.0-preview2.md new file mode 100644 index 0000000000..315445730b --- /dev/null +++ b/release-notes/2.1/2.1.0-preview2.md @@ -0,0 +1,195 @@ +# Release Notes + +## Microsoft.Data.SqlClient 2.1.0-preview2.20297.7 released 23 October 2020 + +This update brings the below changes over the previous release: + +### Added +- Added support for Azure Active Directory Managed Identity authentication [#730](https://github.com/dotnet/SqlClient/pull/730) [[Read more](#Azure-Active-Directory-Managed-Identity-authentication)] +- Added support to provide a user-defined application client ID when using Active Directory authentication [#740](https://github.com/dotnet/SqlClient/pull/740) [[Read more](#Azure-Active-Directory-authentication-using-an-application-client-ID)] +- Added the "Command Timeout" connection string property to set a default timeout for all commands executed with the connection [#722](https://github.com/dotnet/SqlClient/pull/722) [[Read more](#Command-Timeout-connection-string-property)] +- Added support for Always Encrypted on all supported platforms for .NET Standard 2.0 [#756](https://github.com/dotnet/SqlClient/pull/756) [[Read more](#Increased-support-for-Always-Encrypted)] + +### Fixed +- Fixed unobserved exception issue when a timeout occurs before a faulted task completes with an exception [#688](https://github.com/dotnet/SqlClient/pull/688) [#773](https://github.com/dotnet/SqlClient/pull/773) +- Fixed an issue where driver continues to prompt for credentials when using Azure Active Directory authentication [#770](https://github.com/dotnet/SqlClient/pull/770) + +### Changes +- Updated `Microsoft.Data.SqlClient.SNI` (.NET Framework dependency) and `Microsoft.Data.SqlClient.SNI.runtime` (.NET Core/Standard dependency) version to `v2.1.1` and removed symbols from `Microsoft.Data.SqlClient.SNI.runtime`, which are now published to Microsoft Symbols Server [#764](https://github.com/dotnet/SqlClient/pull/764) [[Read more](#Removal-of-symbols-from-Native-SNI)] +- Updated `Microsoft.Identity.Client` dependency version to `v4.21.1` [#765](https://github.com/dotnet/SqlClient/pull/765) +- Performance improvements when establishing an encrypted channel by removing sync over async method calls [#541](https://github.com/dotnet/SqlClient/pull/541) +- Performance improvements by replacing heap-allocated arrays with Spans [#667](https://github.com/dotnet/SqlClient/pull/667) +- Moved common files to shared folder between .NET Framework and .NET Core implementation [#734](https://github.com/dotnet/SqlClient/pull/734) [#753](https://github.com/dotnet/SqlClient/pull/753) + +## New features over Preview release v2.1.0-preview1 + +### Azure Active Directory Managed Identity authentication +This preview release introduces support for Azure Active Directory authentication using [managed identities](https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview). + +The following authentication mode keywords are supported: +- Active Directory Managed Identity +- Active Directory MSI (for cross MS SQL drivers compatibility) + +Connection string examples: + +```cs +// For System Assigned Managed Identity +"Server:{serverURL}; Authentication=Active Directory MSI; Initial Catalog={db};" + +// For System Assigned Managed Identity +"Server:{serverURL}; Authentication=Active Directory Managed Identity; Initial Catalog={db};" + +// For User Assigned Managed Identity +"Server:{serverURL}; Authentication=Active Directory MSI; User Id={ObjectIdOfManagedIdentity}; Initial Catalog={db};" + +// For User Assigned Managed Identity +"Server:{serverURL}; Authentication=Active Directory Managed Identity; User Id={ObjectIdOfManagedIdentity}; Initial Catalog={db};" +``` + + +### Azure Active Directory authentication using an application client ID +This preview release introduces support for passing a user-defined application client ID to the Microsoft Authentication Library, which will be used when authenticating with Azure Active Directory. + +The following new APIs are introduced: + +1. A new constructor has been introduced in ActiveDirectoryAuthenticationProvider:\ +_[Applies to all .NET Platforms (.NET Framework, .NET Core and .NET Standard)]_ + +```csharp +public ActiveDirectoryAuthenticationProvider(string applicationClientId) +``` + +Usage: +```csharp +string APP_CLIENT_ID = ""; +SqlAuthenticationProvider customAuthProvider = new ActiveDirectoryAuthenticationProvider(APP_CLIENT_ID); +SqlAuthenticationProvider.SetProvider(SqlAuthenticationMethod.ActiveDirectoryInteractive, customAuthProvider); + +using (SqlConnection sqlConnection = new SqlConnection("") +{ + sqlConnection.Open(); +} +``` + +2. A new configuration property has been introduced under `SqlAuthenticationProviderConfigurationSection` and `SqlClientAuthenticationProviderConfigurationSection`:\ +_[Applies to .NET Framework and .NET Core]_ + +```csharp +internal class SqlAuthenticationProviderConfigurationSection : ConfigurationSection +{ + ... + [ConfigurationProperty("applicationClientId", IsRequired = false)] + public string ApplicationClientId => this["applicationClientId"] as string; +} + +// Inheritance +internal class SqlClientAuthenticationProviderConfigurationSection : SqlAuthenticationProviderConfigurationSection +{ ... } +``` + +Usage: +```xml + + +
+ + + + + + + + +
+ + + +``` + +### "Command Timeout" connection string property +This preview release introduces the "Command Timeout" connection string property to override the default of 30 seconds. The timeout for individual commands can be overridden using the `CommandTimeout` property on the SqlCommand. + +Connection string examples: + +`"Server:{serverURL}; Initial Catalog={db}; Integrated Security=true; Command Timeout=60"` + +### Increased support for Always Encrypted +This preview release extends support for Always Encrypted on the following platforms: + +| Target Framework | Platform | New Feature support | +|------------------|----------|----| +| .NET Framework v4.6+ | Windows | *No changes* | +| .NET Core 2.1+ | All operating systems | *No changes* | +| .NET Standard 2.0 | All operating systems | Yes, support on all operating systems (without enclaves) | +| .NET Standard 2.1+ | All operating systems | *No changes* | + +### Removal of symbols from Native SNI +We've removed the symbols introduced in [v2.0.0](https://www.nuget.org/packages/Microsoft.Data.SqlClient.SNI/2.0.0) from [Microsoft.Data.SqlClient.SNI.runtime](https://www.nuget.org/packages/Microsoft.Data.SqlClient.SNI.runtime) NuGet starting with [v2.1.1](https://www.nuget.org/packages/Microsoft.Data.SqlClient.SNI.runtime/2.1.1). The public symbols are now published to Microsoft Symbols Server for tools like BinSkim that require access to public symbols. + + +## Target Platform Support + +- .NET Framework 4.6+ (Windows x86, Windows x64) +- .NET Core 2.1+ (Windows x86, Windows x64, Windows ARM64, Windows ARM, Linux, macOS) +- .NET Standard 2.0+ (Windows x86, Windows x64, Windows ARM64, Windows ARM, Linux, macOS) + +### Dependencies + +#### .NET Framework + +- Microsoft.Data.SqlClient.SNI 2.1.1 +- Microsoft.Identity.Client 4.21.1 +- Microsoft.IdentityModel.Protocols.OpenIdConnect 5.6.0 +- Microsoft.IdentityModel.JsonWebTokens 5.6.0 + +#### .NET Core 2.1 + +- Microsoft.Data.SqlClient.SNI.runtime 2.1.1 +- Microsoft.Win32.Registry 4.7.0 +- System.Security.Principal.Windows 4.7.0 +- System.Text.Encoding.CodePages 4.7.0 +- System.Diagnostics.DiagnosticSource 4.7.0 +- System.Configuration.ConfigurationManager 4.7.0 +- System.Runtime.Caching 4.7.0 +- Microsoft.Identity.Client 4.21.1 +- Microsoft.IdentityModel.Protocols.OpenIdConnect 5.6.0 +- Microsoft.IdentityModel.JsonWebTokens 5.6.0 + +#### .NET Core 3.1 + +- Microsoft.Data.SqlClient.SNI.runtime 2.1.1 +- Microsoft.Win32.Registry 4.7.0 +- System.Security.Principal.Windows 4.7.0 +- System.Text.Encoding.CodePages 4.7.0 +- System.Diagnostics.DiagnosticSource 4.7.0 +- System.Configuration.ConfigurationManager 4.7.0 +- System.Runtime.Caching 4.7.0 +- Microsoft.Identity.Client 4.21.1 +- Microsoft.IdentityModel.Protocols.OpenIdConnect 5.6.0 +- Microsoft.IdentityModel.JsonWebTokens 5.6.0 + +#### .NET Standard 2.0 + +- Microsoft.Data.SqlClient.SNI.runtime 2.1.1 +- Microsoft.Win32.Registry 4.7.0 +- System.Buffers 4.5.1 +- System.Memory 4.5.4 +- System.Security.Principal.Windows 4.7.0 +- System.Text.Encoding.CodePages 4.7.0 +- Microsoft.Identity.Client 4.21.1 +- Microsoft.IdentityModel.Protocols.OpenIdConnect 5.6.0 +- Microsoft.IdentityModel.JsonWebTokens 5.6.0 + +#### .NET Standard 2.1 + +- Microsoft.Data.SqlClient.SNI.runtime 2.1.1 +- Microsoft.Win32.Registry 4.7.0 +- System.Buffers 4.5.1 +- System.Memory 4.5.4 +- System.Security.Principal.Windows 4.7.0 +- System.Text.Encoding.CodePages 4.7.0 +- Microsoft.Identity.Client 4.21.1 +- Microsoft.IdentityModel.Protocols.OpenIdConnect 5.6.0 +- Microsoft.IdentityModel.JsonWebTokens 5.6.0 diff --git a/release-notes/2.1/2.1.md b/release-notes/2.1/2.1.md index 67805fbbfa..572179ea3e 100644 --- a/release-notes/2.1/2.1.md +++ b/release-notes/2.1/2.1.md @@ -4,4 +4,5 @@ The following Microsoft.Data.SqlClient 2.1 preview releases have been shipped: | Release Date | Version | Notes | | :-- | :-- | :--: | +| 2020/10/23 | 2.1.0-preview2.20297.7 | [release notes](2.1.0-preview2.md) | | 2020/08/21 | 2.1.0-preview1.20235.1 | [release notes](2.1.0-preview1.md) | diff --git a/release-notes/2.1/README.md b/release-notes/2.1/README.md index 67805fbbfa..572179ea3e 100644 --- a/release-notes/2.1/README.md +++ b/release-notes/2.1/README.md @@ -4,4 +4,5 @@ The following Microsoft.Data.SqlClient 2.1 preview releases have been shipped: | Release Date | Version | Notes | | :-- | :-- | :--: | +| 2020/10/23 | 2.1.0-preview2.20297.7 | [release notes](2.1.0-preview2.md) | | 2020/08/21 | 2.1.0-preview1.20235.1 | [release notes](2.1.0-preview1.md) |