Changelog
April 28, 2026 ยท View on GitHub
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog
Note: Releases are sorted in reverse chronological order (newest first).
[Preview Release 7.1.0-preview1] - 2026-04-29
This update brings the following changes since the 7.0.0 release. See the full release notes for detailed descriptions.
Added
-
Added
SqlBatchsupport on .NET Framework so the batching API is available across the full supported platform matrix. (#3926) -
Added additional accepted connection-string synonyms for cross-driver alignment, including
ColumnEncryption,ConnectTimeout,FailoverPartner,PacketSize, andWorkstationId. (#4192)
Changed
-
SqlConnection.ClearPoolandSqlConnection.ClearAllPoolsnow work correctly with the channel-based pool implementation. (#4194) -
Added type forwards for public authentication abstractions moved into
Microsoft.Data.SqlClient.Extensions.Abstractions. (#4067, #4117) -
Enabled the User Agent feature extension by default. (#4124, #4154)
-
Reduced allocations when sending large string values, plus related source-build and packaging consolidation updates. (#4072, #4033, #4068, #4204)
Fixed
-
Fixed
SqlBulkCopyon SQL Server 2016 graph tables by extracting graph metadata with dynamic SQL. (#3714, #4092, #4147) -
Fixed
SqlBulkCopysupport for Azure Synapse Analytics dedicated SQL pools. (#4149, #4176, #4182) -
Fixed vector float32 metadata so
GetFieldType()andGetProviderSpecificFieldType()return the expected vector type. (#4104, #4105, #4152) -
Added the missing
System.Data.Commondependency for .NET Framework consumers. (#4063, #4074) -
Fixed a
SqlDataReaderstreaming bug triggered by callingIsDBNull()before reading streamed column data. (#4082) -
Fixed a
NullReferenceExceptioninSqlDataReader. (#4159)
[Stable Release 6.1.5] - 2026-04-27
This update brings the following changes since the 6.1.4 release. See the full release notes for target platform support and dependency information.
Fixed
-
Fixed a connection performance regression where SPN (Service Principal Name) generation was triggered for non-integrated authentication modes (e.g., SQL authentication) on the native SNI path, causing unnecessary DNS lookups and significantly slower connection times. (#3523, #3946)
-
Fixed
ExecuteScalarto properly propagate errors when the server sends data followed by an error token. Previously, errors such as conversion failures duringWHEREclause evaluation were silently consumed duringSqlDataReader.Close()instead of being thrown to the caller, which could result in transactions being unexpectedly zombied. (#3736, #3947) -
Fixed
SqlDataReader.GetFieldTypeandSqlDataReader.GetProviderSpecificFieldTypeto return the correct type (SqlVector<float>) for vector float32 columns. (#4104, #4151)
[Stable Release 7.0.1] - 2026-04-23
This update brings the following changes since the 7.0.0 release. See the full release notes for detailed descriptions.
Fixed
-
Fixed
SqlBulkCopyfailing on SQL Server 2016 withInvalid column name 'graph_type'error by using dynamic SQL to extract column names. (#3714, #4092, #4147) -
Fixed
SqlBulkCopyfailing on Azure Synapse Analytics dedicated SQL pools by usingSTRING_AGGfor the column-list query when targeting Synapse. (#4149, #4176, #4182) -
Fixed
SqlDataReader.GetFieldType()andGetProviderSpecificFieldType()returning incorrect type for vector float32 columns. (#4104, #4105, #4152) -
Added missing
System.Data.Common(v4.3.0) NuGet package dependency for .NET Framework consumers to resolveCS0012compilation errors. (#4063, #4074)
Changed
-
Enabled the User Agent TDS feature extension unconditionally; removed the
Switch.Microsoft.Data.SqlClient.EnableUserAgentAppContext switch. (#4124, #4154) -
Added type forwards from the core assembly to public types moved to
Microsoft.Data.SqlClient.Extensions.Abstractions. (#4067, #4117) -
Fixed API documentation include paths and duplicate doc snippets. (#4084, #4086, #4107, #4161)
[Stable Release 7.0.0] - 2026-03-17
This section summarizes all changes across the 7.0 preview cycle for users upgrading from the latest 6.1 stable release. See the full release notes for detailed descriptions.
Also released as part of this milestone:
- Released Microsoft.Data.SqlClient.Extensions.Abstractions 1.0.0. See release notes.
- Released Microsoft.Data.SqlClient.Extensions.Azure 1.0.0. See release notes.
- Released Microsoft.Data.SqlClient.Internal.Logging 1.0.0. See release notes.
- Released Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider 7.0.0. See release notes.
Changed
-
Breaking: Removed Azure dependencies from the core package. Entra ID authentication (
ActiveDirectoryAuthenticationProviderand related types) has been extracted into a newMicrosoft.Data.SqlClient.Extensions.Azurepackage. The coreMicrosoft.Data.SqlClientpackage no longer depends onAzure.Core,Azure.Identity, or their transitive dependencies. Applications using Entra ID authentication must now installMicrosoft.Data.SqlClient.Extensions.Azureseparately. (#1108, #3680, #3902, #3904, #3908, #3917, #3982, #3978, #3986) -
Two additional packages were introduced to support this separation:
Microsoft.Data.SqlClient.Extensions.Abstractions(shared types between the core driver and extensions) andMicrosoft.Data.SqlClient.Internal.Logging(shared ETW tracing infrastructure). (#3626, #3628, #3967, #4038) -
Deprecated
SqlAuthenticationMethod.ActiveDirectoryPassword(ROPC flow). The method is now marked[Obsolete]and will generate compiler warnings. Migrate toActiveDirectoryInteractive,ActiveDirectoryServicePrincipal,ActiveDirectoryManagedIdentity, orActiveDirectoryDefault. (#3671) -
Reverted public visibility of internal interop enums (
IoControlCodeAccessandIoControlTransferType) that were accidentally made public during the project merge. (#3900) -
Removed
Constrained Execution Regionerror handling blocks and associatedSqlConnectioncleanup. (#3535) -
Performance improvements across SqlStatistics timing, Always Encrypted scenarios, and connection opening: (#3609, #3612, #3732, #3660, #3791, #3772, #3554)
-
Allow
SqlBulkCopyto operate on hidden columns. (#3590) -
Updated UserAgent feature to use a pipe-delimited format, replacing the previous JSON format. (#3826)
-
Minor improvements to Managed SNI tracing to capture continuation events and errors. (#3859)
Added
-
Added
SspiContextProviderabstract class andSqlConnection.SspiContextProviderproperty, enabling custom SSPI authentication for scenarios like cross-domain Kerberos negotiation and NTLM username/password authentication. (#2253, #2494) -
Continued refinement of packet multiplexing with bug fixes and stability improvements, plus new app context switches for opt-in control. (#3534, #3537, #3605)
-
Added support for enhanced routing, a TDS feature that allows the server to redirect connections to a specific server and database during login, enabling Azure SQL Hyperscale read replica load balancing. (#3641, #3969, #3970, #3973)
-
Updated pipelines and test suites to compile the driver using the .NET 10 SDK. (#3686)
-
Added
SqlConfigurableRetryFactory.BaselineTransientErrorsstatic property exposing the default transient error codes list as aReadOnlyCollection<int>. (#3903) -
Added app context switch
Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefaultto setMultiSubnetFailover=trueglobally without modifying connection strings. (#3841) -
Added app context switch
Switch.Microsoft.Data.SqlClient.IgnoreServerProvidedFailoverPartnerto let the client ignore server-provided failover partner info in Basic Availability Groups. (#3625) -
Enabled
SqlClientDiagnosticListenerforSqlCommandon .NET Framework, closing a long-standing observability gap where diagnostic events were previously only available on .NET Core. (#3658) -
Brought the 15 strongly-typed diagnostic event classes in the
Microsoft.Data.SqlClient.Diagnosticsnamespace (e.g.,SqlClientCommandBefore,SqlClientConnectionOpenAfter,SqlClientTransactionCommitError) to .NET Framework as part of the codebase merge. These types were originally introduced for .NET Core in 6.0. (#3493) -
Enabled User Agent Feature Extension (opt-in via
Switch.Microsoft.Data.SqlClient.EnableUserAgent). (#3606) -
Added actionable error message when Entra ID authentication methods are used without the
Microsoft.Data.SqlClient.Extensions.Azurepackage installed. (#3962, #4046)
Fixed
-
Fixed a connection performance regression where SPN generation was triggered for non-integrated authentication modes (e.g., SQL authentication) on the native SNI path. (#3929)
-
Fixed
ExecuteScalarto propagate errors when the server sends data followed by an error token. (#3912) -
Fixed
NullReferenceExceptioninSqlDataAdapterwhen processing batch scenarios. (#3857) -
Fixed reading of multiple app context switches from a single
AppContextSwitchOverridesconfiguration field. (#3960) -
Fixed an edge case in
TdsParserStateObject.TryReadPlpByteswhere zero-length reads returnednullinstead of an empty array. (#3872) -
Fixed issue where extra connection deactivation was occurring. (#3758)
-
Fixed debug assertion in connection pool (no impact to production code). (#3587)
-
Prevented uninitialized performance counters escaping
CreatePerformanceCounters. (#3623) -
Fixed
SetProviderto return immediately if user-defined authentication provider found. (#3620) -
Fixed connection pool concurrency issue. (#3632)
[Preview Release 7.0.0-preview4.26064.3] - 2026-03-05
This update brings the below changes over the previous preview release:
Also released as part of this milestone:
- Released Microsoft.Data.SqlClient.Extensions.Abstractions 1.0.0-preview1.26064.3. See release notes.
- Released Microsoft.Data.SqlClient.Extensions.Azure 1.0.0-preview1.26064.3. See release notes.
- Released Microsoft.Data.SqlClient.Extensions.Logging 1.0.0-preview1.26064.3. See release notes.
- Released Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider 7.0.0-preview1.26064.3. See release notes.
Changed
-
Breaking: Removed Azure dependencies from the core package. Entra ID authentication (
ActiveDirectoryAuthenticationProviderand related types) has been extracted into a newMicrosoft.Data.SqlClient.Extensions.Azurepackage. The coreMicrosoft.Data.SqlClientpackage no longer depends onAzure.Core,Azure.Identity, or their transitive dependencies. Applications using Entra ID authentication must now installMicrosoft.Data.SqlClient.Extensions.Azureseparately. (#1108, #3680, #3902, #3904, #3908, #3917, #3982, #3978, #3986) -
Introduced
Microsoft.Data.SqlClient.Extensions.AbstractionsandMicrosoft.Data.SqlClient.Extensions.Loggingpackages to support the extensions model. (#3626, #3628, #3967) -
Updated UserAgent feature to use a pipe-delimited format. (#3826)
-
Minor improvements to Managed SNI tracing. (#3859)
-
Reverted public visibility of internal interop enums that were accidentally made public during the project merge. (#3900)
-
Codebase merge and cleanup: (#3773, #3818, #3836, #3810, #3837, #3963)
Added
-
Added
SspiContextProviderabstract class andSqlConnection.SspiContextProviderproperty, enabling custom SSPI authentication for scenarios like cross-domain Kerberos negotiation and NTLM username/password authentication. (#2253, #2494) -
Added
SqlConfigurableRetryFactory.BaselineTransientErrorsstatic property exposing the default transient error codes list as aReadOnlyCollection<int>. (#3903) -
Added new app context switch
Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefaultto setMultiSubnetFailover=trueby default in connection strings. (#3841) -
Added support for enhanced routing, a TDS feature extension that allows the server to redirect connections to a specific server and database, enabling Azure SQL Hyperscale read replica load balancing. (#3641, #3969, #3970, #3973)
Fixed
-
Fixed
ExecuteScalarto propagate errors when the server sends data followed by an error token. (#3912) -
Fixed
NullReferenceExceptioninSqlDataAdapterwhen processing batch scenarios where certain SQL RPC calls may not include system parameters. (#3857) -
Fixed reading of multiple app context switches from a single
AppContextSwitchOverridesconfiguration field. (#3960) -
Fixed a connection performance regression where SPN generation was triggered for non-integrated authentication modes (e.g., SQL authentication) on the native SNI path. (#3929)
-
Fixed an edge case in
TdsParserStateObject.TryReadPlpByteswhere zero-length reads returnednullinstead of an empty array. (#3872)
[Stable release 6.0.5] - 2026-01-15
This update brings the below changes over the previous stable release:
Fixed
- Fixed NullReferenceException issue with
SqlDataAdapterwhen processing batch scenarios where certain SQL RPC calls may not include system parameters. (#3878)
Added
What Changed:
- Added new AppContext switch
Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefaultto setMultiSubnetFailover=trueby default in connection string. (#3852)
Who Benefits:
- Applications that need MultiSubnetFailover enabled globally without modifying connection strings.
Impact:
- Applications can now enable MultiSubnetFailover globally using one of the following methods:
// In application code
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefault", true);
// In runtimeconfig.json
{
"configProperties": {
"Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefault": true
}
}
<!-- In App.Config -->
<runtime>
<AppContextSwitchOverrides value="Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefault=true" />
</runtime>
Changed
- Updated dependencies (#3840):
-
.NET Framework 4.6.2:
- Azure.Core 1.50.0 - Added
- Azure.Identity 1.14.2 -> 1.17.1
- Microsoft.Identity.Client 4.80.0 - Added
- Microsoft.IdentityModel.JsonWebTokens 7.5.0 -> 7.7.1
- Microsoft.IdentityModel.Protocols.OpenIdConnect 7.5.0 -> 7.7.1
- System.Buffers 4.5.1 -> 4.6.1
- System.Text.Json 8.0.5 -> 8.0.6
- Microsoft.Bcl.Cryptography - Removed
- System.Text.Encodings.Web - Removed
-
.NET 8.0:
- Azure.Core 1.50.0 - Added
- Azure.Identity 1.14.2 -> 1.17.1
- Microsoft.Identity.Client 4.80.0 - Added
- Microsoft.IdentityModel.JsonWebTokens 7.5.0 -> 7.7.1
- Microsoft.IdentityModel.Protocols.OpenIdConnect 7.5.0 -> 7.7.1
- Microsoft.Bcl.Cryptography - Removed
- System.Text.Json - Removed
-
.NET 9.0:
- Azure.Core 1.50.0 - Added
- Azure.Identity 1.14.2 -> 1.17.1
- Microsoft.Extensions.Caching.Memory 9.0.4 -> 9.0.11
- Microsoft.Identity.Client 4.80.0 - Added
- Microsoft.IdentityModel.JsonWebTokens 7.5.0 -> 7.7.1
- Microsoft.IdentityModel.Protocols.OpenIdConnect 7.5.0 -> 7.7.1
- Microsoft.Bcl.Cryptography - Removed
- System.Text.Json - Removed
-
[Stable Release 6.1.4] - 2026-01-15
This update brings the following changes since the 6.1.3 release:
Fixed
- Fixed NullReferenceException issue with
SqlDataAdapterwhen processing batch scenarios where certain SQL RPC calls may not include system parameters. (#3877) - Fixed connection pooling issue where extra connection deactivation was causing active connection counts to go negative. (#3776)
Added
AppContext Switch for enabling MultiSubnetFailover
What Changed:
- Added new AppContext switch
Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefaultto setMultiSubnetFailover=trueby default in connection string. (#3851)
Who Benefits:
- Applications that need MultiSubnetFailover enabled globally without modifying connection strings.
Impact:
- Applications can now enable MultiSubnetFailover globally using one of the following methods:
// In application code
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefault", true);
// In runtimeconfig.json
{
"configProperties": {
"Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefault": true
}
}
<!-- In App.Config -->
<runtime>
<AppContextSwitchOverrides value="Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefault=true" />
</runtime>
Changed
- Optimized
SqlStatisticsexecution timing by usingEnvironment.TickCountinstead of more expensive timing mechanisms. (#3830) - Updated dependencies (#3843):
- .NET Framework 4.6.2:
- Azure.Core 1.47.1 -> 1.50.0
- Azure.Identity 1.14.2 -> 1.17.1
- Microsoft.Identity.Client 4.80.0 - Added
- System.Buffers 4.5.1 -> 4.6.1
- System.Diagnostics.DiagnosticSource 8.0.1 - Added
- System.IdentityModel.Tokens.Jwt 7.7.1 - Added
- System.Memory 4.6.3 - Added
- System.Text.Json 8.0.5 -> 8.0.6
- System.Text.RegularExpressions 4.3.1 - Added
- Microsoft.Bcl.Cryptography - Removed
- System.Text.Encodings.Web - Removed
- .NET 8.0:
- Azure.Core 1.47.1 -> 1.50.0
- Azure.Identity 1.14.2 -> 1.17.1
- Microsoft.Identity.Client 4.80.0 - Added
- System.Diagnostics.DiagnosticSource 8.0.1 - Added
- System.IdentityModel.Tokens.Jwt 7.7.1 - Added
- Microsoft.Bcl.Cryptography - Removed
- System.Text.Json - Removed
- .NET 9.0:
- Azure.Core 1.47.1 -> 1.50.0
- Azure.Identity 1.14.2 -> 1.17.1
- Microsoft.Extensions.Caching.Memory 9.0.4 -> 9.0.11
- Microsoft.Identity.Client 4.80.0 - Added
- System.Configuration.ConfigurationManager 9.0.4 -> 9.0.11
- System.Diagnostics.DiagnosticSource 9.0.11 - Added
- System.IdentityModel.Tokens.Jwt 7.7.1 - Added
- System.Security.Cryptography.Pkcs 9.0.4 -> 9.0.11
- Microsoft.Bcl.Cryptography - Removed
- System.Text.Json - Removed
- .NET Standard 2.0:
- Azure.Core 1.47.1 -> 1.50.0
- Azure.Identity 1.14.2 -> 1.17.1
- Microsoft.Extensions.Caching.Memory 9.0.4 -> 8.0.1
- Microsoft.Identity.Client 4.80.0 - Added
- System.Configuration.ConfigurationManager 9.0.4 -> 8.0.1
- System.Diagnostics.DiagnosticSource 8.0.1 - Added
- System.IdentityModel.Tokens.Jwt 7.7.1 - Added
- System.Security.Cryptography.Pkcs 9.0.4 -> 8.0.1
- System.Text.Json 9.0.5 -> 8.0.6
- Microsoft.Bcl.Cryptography - Removed
- .NET Framework 4.6.2:
[Stable release 5.1.9] - 2026-01-13
This update brings the following changes since the 5.1.8 release:
Changed
- Use Environment.TickCount for SqlStatistics execution timing. (#3831)
- Updated dependencies (#3838):
- .NET Standard 2.0:
- Microsoft.Win32.Registry - Removed
- System.Buffers 4.5.1 -> 4.6.1
- System.IdentityModel.Tokens.Jwt 6.35.0 - Added
- System.Text.Encodings.Web - Removed
- .NET Standard 2.1:
- Microsoft.Win32.Registry - Removed
- System.IdentityModel.Tokens.Jwt 6.35.0 - Added
- System.Text.Encodings.Web - Removed
- .NET Framework 4.6.2:
- System.Buffers 4.5.1 -> 4.6.1
- System.IdentityModel.Tokens.Jwt 6.35.0 - Added
- System.Text.Encodings.Web - Removed
- System.Text.Json - Removed
- .NET 6.0:
- System.Diagnostics.DiagnosticSource - Removed
- System.IdentityModel.Tokens.Jwt 6.35.0 - Added
- System.Text.Encodings.Web - Removed
- .NET Standard 2.0:
[Preview Release 7.0.0-preview3.25342.7] - 2025-12-08
This update brings the following changes over the previous preview release:
Added
Support for .NET 10
What Changed:
- Updated pipelines and test suites to compile the driver using the .NET 10 SDK. Cleaned up unnecessary dependency references. (#3686)
Who Benefits:
- Developers targeting .NET 10.
Impact:
- Addressed .NET 10 warnings regarding unused/unnecessary dependencies.
Enable SqlClientDiagnosticListener in SqlCommand on .NET Framework
What Changed:
- Enabled SqlClientDiagnosticListener functionality on SqlCommand for .NET Framework. (#3658)
Who Benefits:
- Developers requiring diagnostic information on .NET Framework.
Impact:
- Improved observability and diagnostics for SqlCommand on .NET Framework.
Enable User Agent Extension
What Changed:
- Enabled User Agent Feature Extension. (#3606)
Who Benefits:
- Telemetry and diagnostics consumers.
Impact:
- When the
Switch.Microsoft.Data.SqlClient.EnableUserAgentapp context switch is enabled, the driver sends more detailed user agent strings. This switch is disabled by default. This change will assist with troubleshooting and quantifying driver usage by version and operating system.
Fixed
- Fixed an issue where extra connection deactivation was occurring. (#3758)
Changed
Other changes
[Stable release 6.0.4] - 2025-11-15
This update brings the below changes over the previous stable release:
Added
App Context Switch for Ignoring Server-Provided Failover Partner
What Changed:
- A new app context switch
Switch.Microsoft.Data.SqlClient.IgnoreServerProvidedFailoverPartnerwas introduced to let the client ignore server-provided failover partner info in Basic Availability Groups (BAGs). When the switch is enabled, only the failover partner specified in the connection string is used; server-supplied partner values are skipped. This context switch was introduced in PR #3703.
Who Benefits:
- Applications connecting to SQL Server BAGs using TCP and custom ports, especially where the server's provided partner name lacks the protocol, host, or port. This avoids connection failures when the server-provided partner is incompatible or incomplete.
- Teams who manage availability groups and rely on client-side control of failover behavior in heterogeneous networking environments.
Impact:
- If your environment might be affected (i.e., you operate a BAG with custom ports, or have experienced failures after failover), you can enable the new switch in your application:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.IgnoreServerProvidedFailoverPartner", true);
- Then, ensure your connection string includes your preferred failover partner (with correct
tcp:host,port) so that the client uses that instead of the server's suggestion. - Without enabling this, by default, the client continues to prefer the server-provided partner, maintaining backwards compatibility.
[Stable release 5.1.8] - 2025-11-14
This update brings the following changes since the 5.1.7 release:
Added
App Context Switch for Ignoring Server-Provided Failover Partner
What Changed:
- A new app context switch
Switch.Microsoft.Data.SqlClient.IgnoreServerProvidedFailoverPartnerwas introduced to let the client ignore server-provided failover partner info in Basic Availability Groups (BAGs). When the switch is enabled, only the failover partner specified in the connection string is used; server-supplied partner values are skipped. This context switch was introduced in PR #3704.
Who Benefits:
- Applications connecting to SQL Server BAGs using TCP and custom ports, especially where the server's provided partner name lacks the protocol, host, or port. This avoids connection failures when the server-provided partner is incompatible or incomplete.
- Teams who manage availability groups and rely on client-side control of failover behavior in heterogeneous networking environments.
Impact:
- If your environment might be affected (i.e., you operate a BAG with custom ports, or have experienced failures after failover), you can enable the new switch in your application:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.IgnoreServerProvidedFailoverPartner", true);
- Then, ensure your connection string includes your preferred failover partner (with correct
tcp:host,port) so that the client uses that instead of the server's suggestion. - Without enabling this, by default, the client continues to prefer the server-provided partner, maintaining backwards compatibility.
Fixed
- Fixed a bulk copy bug that incorrectly prepended a UTF-8 Byte-Order-Marker when processing row data. (#3617)
Changed
- Modernized creation of
Microsoft.Identity.Client.PublicClientApplicationinstances to use its builder pattern. (#3367) - Replaced use of undocumented .NET Framework internals when reading
SqlDecimalvalues. (#3465) - Updated the following dependencies
(#3754):
- Azure.Core 1.41.0 (Avoids transitive vulnerability)
- Azure.Identity 1.12.1
- Microsoft.Identity.Client 4.76.0
[Stable Release 6.1.3] - 2025-11-12
This update includes the following changes since the 6.1.2 release:
Added
App Context Switch for Ignoring Server-Provided Failover Partner
What Changed:
- A new app context switch
Switch.Microsoft.Data.SqlClient.IgnoreServerProvidedFailoverPartnerwas introduced to let the client ignore server-provided failover partner info in Basic Availability Groups (BAGs). When the switch is enabled, only the failover partner specified in the connection string is used; server-supplied partner values are skipped. This context switch was introduced in PR #3702.
Who Benefits:
- Applications connecting to SQL Server BAGs using TCP and custom ports, especially where the server's provided partner name lacks the protocol, host, or port. This avoids connection failures when the server-provided partner is incompatible or incomplete.
- Teams who manage availability groups and rely on client-side control of failover behavior in heterogeneous networking environments.
Impact:
- If your environment might be affected (i.e., you operate a BAG with custom ports, or have experienced failures after failover), you can enable the new switch in your application:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.IgnoreServerProvidedFailoverPartner", true);
- Then, ensure your connection string includes your preferred failover partner (with correct
tcp:host,port) so that the client uses that instead of the server's suggestion. - Without enabling this, by default, the client continues to prefer the server-provided partner, maintaining backwards compatibility.
Fixed
- Fixed an issue to ensure reliable metrics initialization during startup, preventing missed telemetry when EventSource is enabled early. (#3718)
[Preview Release 7.0.0-preview2.25289.6] - 2025-10-16
This update brings the following changes since [7.0.0-preview1.25257.1]
Bug Fixes
- Fixed a debug assertion in connection pool (no impact to production code) (#3587)
- Prevent uninitialized performance counters escaping
CreatePerformanceCounters(#3623) - Fix SetProvider to return immediately if user-defined authentication provider found (#3620)
- Allow SqlBulkCopy to operate on hidden columns (#3590)
- Fix connection pool concurrency issue (#3632)
Added
- App context switch for ignoring server-provided failover partner (#3625)
- App context switch for enabling asynchronous multi-packet improvements (#3605)
Changed
- Deprecation of
SqlAuthenticationMethod.ActiveDirectoryPassword(#3671)
Other changes
-
Improve performance in
SqlStatisticsby usingEnvironment.TickCountfor calculating execution timing (#3609) -
Improve performance in Always Encrypted scenarios by using lower-allocation primitives (#3612)
-
Various test improvements: (#3423, #3488, #3624, #3638, #3642, #3678, #3690)
-
Codebase merge project and related cleanup: (#3555, #3603, #3608, #3611, #3619, #3622, #3630, #3631, #3634, #3637, #3644, #3647, #3655)
-
Code health improvements: (#3645)
-
Updated Dependencies (#3638):
- Updated
Azure.Coreto v1.49.0 - Updated
Azure.Identityto v1.16.0 - Updated
Azure.Security.KeyVault.Keysv4.8.0 (AKV provider) - Updated
Microsoft.Bcl.Cryptographyto v9.0.9 (net9) - Updated
Microsoft.Extensions.Caching.Memoryto v9.0.9 (net9) - Updated
Microsoft.IdentityModel.JsonWebTokensto v8.14.0 - Updated
Microsoft.IdentityModel.Protocols.OpenIdConnectto v8.14.0 - Updated
System.Buffersto v4.6.1 (net462) - Updated
System.Memoryto v4.6.3 (net462) - Updated
System.Configuration.ConfigurationManagerto v9.0.9 (net9) - Updated
System.Security.Cryptography.Pkcsto v9.0.9 (net9) - Updated
System.Text.Jsonto v8.0.6 (net8), v9.0.9 (net9)
- Updated
[Stable Release 6.1.2] - 2025-10-07
This update includes the following changes since the 6.1.1 release:
Fixed
- Fixed an issue where initializing PerformanceCounters would throw
System.InvalidOperationException#3629 - Fixed an issue where a Custom SqlClientAuthenticationProvider was being overwritten by default implementation. #3651
- Fixed a concurrency issue in connection pooling where the number of active connections could be lower than the configured maximum pool size. #3653
[Stable release 6.0.3] - 2025-10-07
This update brings the below changes over the previous stable release:
Fixed
- Fixed an issue where a Custom SqlClientAuthenticationProvider was being overwritten by default implementation. #3652
- Fixed a concurrency issue in connection pooling where the number of active connections could be lower than the configured maximum pool size. #3654
Changed
- Updated MSAL usage as per code compliance requirements #3360
- Updated
SqlDecimalimplementation to improve code compliance #3466 - Updated Azure.Identity and related dependencies #3553
[Preview Release 7.0.0-preview1.25257.1] - 2025-09-12
This update brings the following changes since the 6.1.0 release:
Breaking Changes
- Removed
Constrained Execution Regionerror handling blocks and associatedSqlConnectioncleanup which may affect how potentially-broken connections are expunged from the pool. (#3535)
Bug Fixes
Added
SqlColumnEncryptionCertificateStoreProvidernow works on Windows, Linux, and macOS. (#3014)
Changed
-
Updated
SqlVector.Nullto return a nullableSqlVectorinstance in the reference API to match the implementation. (#3521) -
Performance improvements for all built-in
SqlColumnEncryptionKeyStoreProviderimplementations. (#3554) -
Various test improvements. (#3456, #2968, #3458, #3494, #3559, #3575)
-
Codebase merge project and related cleanup. (#3436, #3434, #3448, #3454, #3462, #3435, #3492, #3473, #3469, #3394, #3493, #3593)
-
Documentation improvements. (#3490)
-
Updated
Azure.Identitydependency to v1.14.2. (#3538)
[Stable Release 6.1.1] - 2025-08-14
This update includes the following changes since the 6.1.0 release:
Fixed
- Reverted changes related to improving partial packet detection, fixup, and replay functionality. This revert addresses regressions introduced in 6.1.0. (#3556)
- Applied reference assembly corrections supporting vector, fixed JSON tests, and ensured related tests are enabled. #3562
- Fixed
SqlVector<T>.NullAPI signature in Reference assembly. #3521
Changed
[Stable Release 6.1.0] - 2025-07-25
This update brings the following changes since the 6.1.0-preview2 release:
Added
No new features were added.
Fixed
- Fixed missing socket error codes on non-Windows platforms. (#3475)
- Fixed primary/secondary server SPN handling during SSPI negotiation. (#3478)
- Fixed AzureKeyVaultProvider package key caching to serialize Azure key fetch operations. (#3477)
- Fixed a rare error related to multi-packet async text reads. (#3474)
- Fixed some spelling errors in the API docs. (#3500)
- Fixed a rare multi-packet string corruption bug. (#3513)
Changed
SqlDecimal type workarounds conversions
What Changed:
- Changed how SqlDecimal type workarounds perform conversions to meet compliance policies. (#3467)
Who Benefits:
- Microsoft products must not use undocumented APIs on other Microsoft products. This change removes calls to undocumented APIs and replaces them with compliant API use.
Impact:
- These changes impose an observed 5% decrease in performance on .NET Framework.
SqlVector API improvements
What Changed:
- Several changes were made to the SqlVector API published in the
6.1.0-preview2 release
(#3472):
- The SqlVector class was changed to a readonly struct.
- The null value constructor was changed to a static
CreateNull()method. - The
Sizeproperty was removed.
Who Benefits:
- SqlVector instances gain the efficiencies of struct handling.
Impact:
- Early-adopter applications may require updates if they rely on the old APIs and any class-specific behaviour.
[Preview Release 6.1.0-preview2.25178.5] - 2025-06-27
This update brings the following changes since the 6.1.0-preview1 release:
Added
Added dedicated SQL Server vector datatype support
What Changed:
- Optimized vector communications between MDS and SQL Server 2025, employing a custom binary format over the TDS protocol. (#3433, #3443)
- Reduced processing load compared to existing JSON-based vector support.
- Initial support for 32-bit single-precision floating point vectors.
Who Benefits:
- Applications moving large vector data sets will see beneficial improvements to processing times and memory requirements.
- Vector-specific APIs are ready to support future numeric representations with a consistent look-and-feel.
Impact:
- Reduced transmission and processing times for vector operations versus JSON
using SQL Server 2025 preview:
- Reads: 50x improvement
- Writes: 3.3x improvement
- Bulk Copy: 19x improvement
- (Observed with vector column of max 1998 size, and 10,000 records for each operation.)
- Improved memory footprint due to the elimination of JSON serialization/deserialization and string representation bloat.
- For backwards compatibility with earlier SQL Server Vector implementations, applications may continue to use JSON strings to send/receive vector data, although they will not see any of the performance improvements noted above.
Revived .NET Standard 2.0 target support
What Changed:
- Support for targeting .NET Standard 2.0 has returned. (#3381)
- Support had previously been removed in the 6.0 release, with the community voicing concerns.
Who Benefits:
- Libraries that depend on MDS may seamlessly target any of the following
frameworks:
- .NET Standard 2.0
- .NET Framework 4.6.2 and above
- .NET 8.0
- .NET 9.0
- Applications should continue to target runtimes.
- The MDS .NET Standard 2.0 target framework support does not include an actual implementation, and cannot be used with a runtime.
- An application's build/publish process should always pick the appropriate MDS .NET/.NET Framework runtime implementation.
- Custom build/publish actions that incorrectly try to deploy the MDS .NET Standard 2.0 reference DLL at runtime are not supported.
Impact:
- Libraries targeting .NET Standard 2.0 will no longer receive warnings like
this:
warning NU1701: Package 'Microsoft.Data.SqlClient 6.0.2' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8, .NETFramework,Version=v4.8.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project.
Fixed
- Fixed missing <NeutralLanguage> property. (#3325)
- Fixed injection of UTF-8 BOM during bulk copy. (#3399)
- Fixed
SqlCachedBufferasync read edge case. (#3329) - Fixed
SqlSequentialTextReaderedge case with single-byte reads. (#3383) - Fixed an incorrect error message when parsing connection string
PoolBlockingPeriod. (#3411) - Added missing
ToString()override toSqlJson. (#3427)
Changed
- Reduced allocations when opening a connection. (#3364)
- Various performance improvements related to TDS parsing. (#3337, #3377, #3422)
- Improved native AOT support. (#3364, #3369, #3401)
- Progress towards SSPI extensibility. (#2454)
- Progress towards connection pooling improvements. (#3352, #3396)
- Expanded/clarified SqlConnection's AccessToken and AccessTokenCallback documentation. (#3339)
- Fixed some poorly formatted tables in the API docs. (#3391)
- Code merge towards a unified SqlClient project, aligning .NET Framework and .NET Core implementations. (#3262, #3291, #3305, #3306, #3310, #3323, #3326, #3335, #3338, #3340, #3341, #3343, #3345, #3353, #3355, #3368, #3373, #3376, #3388, #3389, #3393, #3405, #3414, #3416, #3417, #3420, #3431, #3438)
- Test improvements include a new unit test project, updates to test dependencies, removal of hardcoded credentials, and improved robustness. (#3204, #3379, #3380,) #3402
- Added dependency on
System.Text.Json8.0.5 (.NET 8.0) and 9.0.5 (.NET Standard 2.0, .NET 9.0) to avoid transitive vulnerabilities (CVE-2024-43485). (#3403)
[Preview Release 6.1.0-preview1.25120.4] - 2025-04-30
This update brings the following changes over the previous release:
Added
- Added packet multiplexing support to improve large data read performance. #2714 #3161 #3202
- Added support for special casing with Fabric endpoints. #3084
Fixed
- Fixed distributed transactions to be preserved during pooled connection resets. #3019.
- Fixed application crash when the
Data Sourceparameter begins with a comma. #3250. - Resolved synonym count discrepancies in debug mode. #3098.
- Addressed warnings for down-level SSL/TLS versions. #3126.
Changed
- Optimized binary size for AOT. #3091
- Refined bulk copy operations to handle unmatched column names more effectively. #3205.
- Enhanced
SqlBulkCopyto explicitly identify mismatched column names. #3183. - Optimized outgoing SSPI blob handling using
IBufferWriter<byte>. #2452. - Replaced
byte[]withstringfor SNI to improve efficiency. #2790. - Code cleanup to remove SQL 2000 support. #2839, #3206, #3217
- Connection pool design refactor for a modular connection pool design. #3199
- Updated various dependencies #3229, primarily:
- System.Text.Encodings.Web to v8.0.0
- System.Text.Json to v8.0.5
- Azure.Identity to v1.13.2
- Microsoft.Identity.Model.Json.Web.Tokens to v7.7.1
- Microsoft.Identity.Model.Protocols.OpenIdConnect to v7.7.1
- Code merge towards a unified SqlClient project, aligning .NET Framework and .NET Core implementations. (#2957, #2963, #2984, #2982, #3023, #3015, #2967, #3164, #3163, #3171, #3182, #3179, #3156, #3213, #3232, #3236, #3231, #3241, #3246, #3247, #3222, #3255, #3254, #3259, #3264, #3256, #3251, #3275, #3277, #3263, #3292, #3208).
- Test improvements include updates to test references, removal of hardcoded certificates, improved stability, and better coverage (#3041, #3034, #3130, #3128, #3181, #3060, #3184, #3033, #3186, #3025, #3230, #3237, #3059, #3061).
[Stable release 5.2.3] - 2025-04-29
This update brings the following changes since the 5.2.2 release:
Fixed
- Fixed possible
NullPointerExceptionduring socket receive (PR #3284) - Fixed inconsistencies between source and reference projects (PR #3124)
- Adjusted retry logic to allow errors with negative numbers to be considered transient (PR #3185)
Changed
- Updated the following dependencies:
- System.Private.Uri 4.3.2 - Avoid transitive CVE-2019-0820 (PR #3076)
- Microsoft.Extensions.Caching.Memory 6.0.1 to 6.0.3 - Avoid CVE-2024-43483 (PR #3280)
[Stable release 6.0.2] - 2025-04-25
This update brings the below changes over the previous release:
Fixed
- Fixed possible
NullPointerExceptionduring socket receive #3283 - Fixed reference assembly definitions for SqlJson APIs #3169
- Fixed an error reading the output parameter of type JSON while executing stored procedure #3173
Changed
- Updated the below dependencies:
- Updated Microsoft.Bcl.Cryptography from 9.0.0 to 9.0.4 for .NET 9 targeted dll. #3281
- Updated Microsoft.Extensions.Caching.Memory from 9.0.0 to 9.0.4 for .NET 9 targeted dll. #3281
- Updated System.Configuration.ConfigurationManager from 9.0.0 to 9.0.4 for .NET 9 targeted dll. #3281
- Updated System.Security.Cryptography.Pkcs from 9.0.0 to 9.0.4 for .NET 9 targeted dll. #3281
[Stable release 5.1.7] - 2025-04-25
This update brings the following changes since the 5.1.6 release:
Fixed
- Fixed possible
NullPointerExceptionduring socket receive (PR #3285) - Fixed inconsistencies between source and reference projects (PR #3180)
Changed
- Updated the following dependencies:
- Microsoft.Data.SqlClient.SNI 5.1.1 to 5.1.2 for .NET Framework on Windows (PR #3294)
- Microsoft.Data.SqlClient.SNI.runtime 5.1.1 to 5.1.2 for .NET on Windows (PR #3294)
- Microsoft.Extensions.Caching.Memory 6.0.1 to 6.0.3 - Avoid CVE-2024-43483 (PR #3068)
- Microsoft.Extensions.Hosting 6.0.0 to 6.0.1 - Avoid transitive dependency on vulnerable System.Text.Json 6.0.0 (PR #3207)
- System.Private.Uri 4.3.2 - Avoid transitive CVE-2019-0820 (PR #3077)
- System.Text.Encodings.Web 6.0.0 to 6.0.1 - Avoid transitive downgrade for .NET Framework targets (PR #3279)
- System.Text.Json 6.0.11 - Avoid transitive dependencies on older vulnerable versions for .NET Framework targets (PR #3279)
[Stable release 6.0.1] - 2025-01-23
This update brings the below changes over the previous release:
Fixed
- Fixed reference assembly definitions for SqlClientDiagnostic APIs #3097
- Fixed issue with down-level SSL/TLS version warnings #3126
Changed
- Dependency changes
[Stable release 6.0.0] - 2024-12-09
No changes since the last preview release
[Preview Release 6.0.0-preview3.24332.3] - 2024-11-27
This update brings the below changes over the previous release:
Breaking Changes
- Dropped support for .NET 6 #2927
- Removed SQL 2000 client-side debugging support for .NET Framework #2981, #2940
Added
- Enabled NuGet package auditing via NuGet.org audit source #3024
- Added support for .NET 9 #2946
- Added dependency on System.Security.Cryptography.Pkcs:9.0.0 to address SYSLIB0057#2946
- Added dependency on Microsoft.Bcl.Cryptography:9.0.0 #2946
- Added missing SqlCommand_BeginExecuteReader code sample #3009
- Added support for SqlConnectionOverrides in OpenAsync() API #2433
- Added localization in Czech, Polish, and Turkish #2987
Fixed
- Reverted default value of UseMinimumLoginTimeout context switch to 'true' #2419
- Added missing DynamicallyAccessedMembers attributes in .NET Runtime reference assemblies. #2946
- Synchronized dependencies of Reference Assemblies with Runtime assemblies #2878
- Fixed lazy initialization of the _SqlMetaData hidden column map for .NET Framework #2964
Changed
- Updated Microsoft.Extensions.Caching.Memory to 9.0.0 for all frameworks #2946
- Updated System.Configuration.ConfigurationManager to 9.0.0 #2946
- Updated docs to use absolute links #2949
- Removed System.Text.Json dependency from .NET 8 #2930
[Preview Release 6.0.0-preview2.24304.8] - 2024-10-30
This update brings the below changes over the previous release:
Added
- Added a dependency on System.Text.Json 8.0.5 for .NET 8+ and 6.0.10 for other versions #2921
- Added support for JSON datatype #2916, #2892, #2891, #2880, #2882, #2829, #2830
- Added readme to nuget package #2826
Fixed
- Fixed scale serialization when explicitly set to 0 #2411
- Fixed issue blocking GetSchema commands from being enrolled into the current transaction #2876
- Adjusted retry logic to allow errors with negative numbers to be considered transient #2896
- Fixed string formatting in OutOfMemory exceptions #2797
- Increased routing attempts to 10 in netcore for LoginNoFailover and added routing support to LoginWithFailover to standardize routing behavior between netcore and netfx #2873
- Restructured documentation into XML format so that it displays correctly in visual studio #2836, #2822, #2834, #2851, #2863, #2864, #2865, #2869, #2871, #2837, #2821
- Fixed cleanup behavior when column decryption fails. Prevents leaving stale data on the wire for pooled connections #2843, #2825
Changed
- Updated System.Configuration.ConfigurationManager from 8.0.0 to 8.0.1 for .Net 8 #2921
- Updated Microsoft.Extensions.Caching.Memory from 8.0.0 to 8.0.1 for .Net 8 #2921
- Code Health Improvements #2915, #2844, #2812, #2805, #2897, #2376, #2814, #2889, #2885, #2854, #2835, #2442, #2820, #2831, #2907, #2910, #2898, #2928, #2929, #2936, #2939
[Preview Release 6.0.0-preview1.24240.8] - 2024-08-27
This update brings the below changes over the previous release:
Breaking Changes
Added
- Added
TokenCredentialobject to take advantage of token caching inActiveDirectoryAuthenticationProvider. #2380 - Added support for using
DateOnlyandTimeOnlyinDataTableandSqlDataRecordstructured parameters. #2258 - Added
Microsoft.Data.SqlClient.Diagnostics.SqlClientDiagnostictype in .NET. #2226 - Added scope trace for
GenerateSspiClientContext. #2497, #2725
Fixed
- Fixed
Socket.Connecttimeout issue caused by thread starvation. #2777 - Fixed pending data with
SqlDataReaderagainst an encrypted column. #2618 - Fixed Entra authentication when using infinite connection timeout in
ActiveDirectoryAuthenticationProvider. #2651 - Fixed
GetSchemaby excluding unsupported engines due to lack of support forASSEMBLYPROPERTYfunction. #2593 - Fixed SSPI retry negotiation with default port in .NET. #2559
- Fixed assembly path in .NET 8.0 and
.AssemblyAttributes. #2550 - Fixed certificate chain validation. #2487
- Fixed clone of
SqlConnectionto includeAccessTokenCallback. #2525 - Fixed issue with
DateTimeOffsetin table-valued parameters, which was introduced in 5.2. #2453 - Fixed
ArgumentNullExceptiononSqlDataRecord.GetValuewhen using user-defined data type on .NET. #2448 - Fixed
SqlBufferandSqlGuidwhen it's null. #2310 - Fixed
SqlBulkCopy.WriteToServerstate in a consecutive calls. #2375 - Fixed null reference exception with
SqlConnection.FireInfoMessageEventOnUserErrorsafter introducing the batch command. #2399
Changed
- Updated Microsoft.Data.SqlClient.SNI version to
6.0.0-preview1.24226.4. #2772 - Improved access to
SqlAuthenticationProviderManager.Instanceand avoid early object initiation. #2636 - Removed undocumented properties of
Azure.IdentityinActiveDirectoryAuthenticationProvider. #2562 - Replaced
System.Runtime.CachingwithMicrosoft.Extensions.Caching.Memory. #2493 - Updated
EnableOptimizedParameterBindingto only accept text mode commands. #2417 - Updated
Azure.Identityversion from1.10.3to1.11.4. #2577 - Updated
Azure.Coreversion from1.35.0to1.38.0. #2462 - Updated
Azure.Security.KeyVault.Keysversion from4.4.0to4.5.0. #2462 - Updated
Microsoft.IdentityModel.JsonWebTokensandMicrosoft.IdentityModel.Protocols.OpenIdConnectfrom6.35.0to7.5.0. #2429 - Removed direct dependency to
Microsoft.Identity.Clientto take the transient dependecy throughAzure.Identity. #2577 - Removed unnecessary references
Microsoft.Extensions.Caching.MemoryandSystem.Security.Cryptography.Cngafter removing .NET Standard. #2577 - Improved memory allocation when reader opened by
CommandBehavior.SequentialAccessover the big string columns. #2356 - Improved SSPI by consolidating the context generation to single abstraction and using memory/span for SSPI generation. #2255, #2447
- Reverted the #2281 code changes on ManagedSNI. #2395
- Updated assembly version to 6.0.0.0. #2382
- Code health improvements: #2366, #2369, #2381, #2390, #2392, #2403, #2410, #2413, #2425, #2428, #2440, #2443, #2450, #2466, #2486, #2521, #2522, #2533, #2552, #2560, #2726, #2751, #2811
[Stable release 5.2.2] - 2024-08-27
Fixed
- Fixed
AcquireTokenAsynctimeout handling for edge cases inActiveDirectoryAuthenticationProvider. #2650 - Fixed issue with
Socket.Connectin managed SNI. #2779 - Fixed path for
AssemblyAttributesin obj folder causing NET 8.0 assembly to appear in NET 6.0 dll. #2789 - Fixed SSPI retry negotiation with default port in .NET. #2815
- Fixed
ArgumentNullExceptiononSqlDataRecord.GetValuewhen using user-defined data type on .NET. #2816 - Fixed pending data with
SqlDataReaderagainst an encrypted column. #2817
Changed
- Upgraded
Azure.Identityversion from 1.11.3 to 1.11.4 #2648 to address CVE-2024-35255. - Upgraded
Microsoft.Identity.Clientversion from 4.60.0 to 4.61.3 #2648 to address CVE-2024-35255. - Added caching to
TokenCredentialobjects to take advantage of token caching. #2775
[Stable release 5.1.6] - 2024-08-27
Fixed
- Fixed Transient fault handling issue with
OpenAsync. #1983 #2508 - Fixed
AcquireTokenAsynctimeout handling for edge cases inActiveDirectoryAuthenticationProvider. #2706 - Fixed pending data with
SqlDataReaderagainst an encrypted column. #2618 #2818
Changed
- Upgraded
Azure.Identityversion from 1.11.3 to 1.11.4 [#2649] (https://github.com/dotnet/SqlClient/pull/2649) [#2529] (https://github.com/dotnet/SqlClient/pull/2529) to address CVE-2024-35255. - Upgraded
Microsoft.Identity.Clientversion from 4.60.0 to 4.61.3 [#2649] (https://github.com/dotnet/SqlClient/pull/2649) [#2529] (https://github.com/dotnet/SqlClient/pull/2529) to address CVE-2024-35255. - Added caching to
TokenCredentialobjects to take advantage of token caching. #2776 - Code health improvements: [#2490] (https://github.com/dotnet/SqlClient/pull/2490)
[Stable release 4.0.6] - 2024-08-21
Fixed
- Fixed connection to unsubscribe from transaction completion events before returning it to the connection pool #2301 #2435
- Fixed AcquireTokenAsync timeout handling for edge cases in ActiveDirectoryAuthenticationProvider #2707
Changed
[Stable release 3.1.7] - 2024-08-20
Fixed
- Fixed connection to unsubscribe from transaction completion events before returning it to the connection pool. #2301 #2434
- Fixed
AcquireTokenAsynctimeout handling for edge cases inActiveDirectoryAuthenticationProvider. #2709 - Fixed the signing issue with
Microsoft.Data.SqlClientassembly. #2789
Changed
- Updated Microsoft.Data.SqlClient.SNI version 3.0.1 to 3.0.2 #2676 which includes the fix for AppDomain crashing in issue #1418 and various code refactors.
- Code health improvements: #2147, #2515, #2517 addresses CVE-2019-0545, #2539
[Stable release 5.2.1] - 2024-05-31
This update brings the below changes over the previous release:
Fixed
- Fixed connection errors on Linux when Data Source property contains both named instance and port #2436
- Fixed
SqlConnection.FireInfoMessageEventOnUserErrorswhen set to true throws an exception #2505 - Fixed exception when using
DATETIMEOFFSET(n)in a TVP ifnis 1, 2, 3, or 4 #2506 - Reverted PR #1983 which caused connection failure delays when using
OpenAsync#2507 - Fixed
SqlConnection.Clone()to includeAccessTokenCallback#2527
Changed
- Upgraded
Azure.Identityversion from 1.10.3 to 1.11.3 #2492, #2528 - Upgraded
Microsoft.Identity.Clientversion from 4.56.0 to 4.60.3 #2492 - Code Health improvements: #2467
[Stable release 5.2.0] - 2024-02-28
Added
- Added a new
AccessTokenCallBackAPI toSqlConnection. #1260 - Added
SqlBatchsupport on .NET 6+ #1825, #2223,#2371, #2373 - Added support of
SqlDiagnosticListeneron .NET Standard. #1931 - Added new property
RowsCopied64toSqlBulkCopy. #2004 - Added support for the
SuperSocketNetLibregistry option for Encrypt on .NET on Windows. #2047 - Added the ability to generate debugging symbols in a separate package file #2137
- Added Workload Identity authentication support #2159, #2264
- Added support for Big Endian systems #2170
- Added support for Georgian collation #2194
- Added Localization support on .NET #2210
- Added .NET 8 support #2230
- Added explicit version for major .NET version dependencies on System.Runtime.Caching 8.0.0, System.Configuration.ConfigurationManager 8.0.0, and System.Diagnostics.
- DiagnosticSource 8.0.0 #2303
Fixed
- Fixed Always Encrypted secure enclave retry logic for async queries. #1988
- Fixed activity correlator to continue use of same GUID for connection activity. #1997
- Fixed behavior when error class is greater than 20 on connection retry. #1953
- Fixed error message when symmetric key decryption failed using Always Encrypted. #1948
- Fixed TransactionScope connection issue when Enlist is enable, Pooling is disabled and network connection type is Redirect. #1960
- Fixed TDS RPC error on large queries in SqlCommand.ExecuteReaderAsync. #1936
- Fixed throttling of token requests by calling AcquireTokenSilent. #1925
- Fixed Linux code coverage result in Build proj. #1950
- Fixed NullReferenceException in GetBytesAsync. #1906
- Fixed Transient fault handling issue with OpenAsync. #1983
- Fixed invariant mode checks. #1917
- Fixed GC behavior in TdsParser by adding array rental capability in TryReadPlpUnicodeChars. #1866
- Fixed socket synchronization issue during connect in managed SNI. #1029
- Fixed issue with
SqlConnectionStringBuilderproperty indexer not supporting non-string values. #2018 - Fixed
SqlDataAdapter.Filland configurable retry logic issue on .NET Framework. #2084 - Fixed
SqlConnectionEncryptOptiontype conversion by introducing theSqlConnectionEncryptOptionConverterattribute when using appsettings.json files. #2057 - Fixed th-TH culture info issue on Managed SNI. #2066
- Fixed an issue when using the Authentication option, but not encrypting on .NET Framework where the server certificate was being incorrectly validated #2224
- Fixed a deadlock problem for distributed transactions when on .NET #2161
- Fixed an issue with connecting to named instances on named pipes in managed SNI (Linux/macOS) #2142
- Fixed LocalDb connection issue with an invalid source when using managed SNI #2129
- Fixed an
AccessViolationExceptionwhen using a SQL Express user instance #2101 - Fixed a metadata query issue when connecting to Azure SQL Edge #2099
- Fixed file version information for .NET and .NET Standard binaries #2093
- Fixed the SPN sent for a named instance when using Kerberos authentication on Linux/macOS #2240
- Fixed connection to unsubscribe from transaction completion events before returning it to the connection pool #2301
- Fixed InvalidCastException when reading an Always Encrypted date or time column #2275
- Fixed token caching to prevent expired access tokens from being reused in a connection pool #2273
Changed
- Improved parsing buffered characters in
TdsParser. #1544 - Added Microsoft.SqlServer.Types to verify support for SqlHierarchyId and Spatial for .NET Core. #1848
- Moved to new System.Data.SqlTypes APIs on .NET 7 and up. #1934 and #1981
- Removed reference to Microsoft.Win32.Registry since it's shipped starting with .NET 6.0. #1974
- Changed UseOneSecFloorInTimeoutCalculationDuringLogin App Context switch default to true and extended its effect to .NET and .NET Standard. #2012
- Updated
Microsoft.Identity.Clientversion from 4.47.2 to 4.53.0. #2031, #2055 - Switched to the new .NET NegotiateAuthentication API on .NET 7.0 and above for SSPI token negotiation using Managed SNI. #2063
- Removed
ignoreSniOpenTimeoutin open connection process on Windows. #2067 - Enforce explicit ordinal for internal
StringComparisonoperations. #2068 - Improved error messages when validating server certificates in managed SNI (Linux/macOS) #2060
- Improved CPU usage when
AppContextswitches are in use #2227 - Upgraded
Azure.Identitydependency version to 1.10.3 to address CVE-2023-36414, #2189 - Changed Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Protocols.OpenIdConnect version 6.24.0 to 6.35.0 #2290 to address CVE-2024-21319
- Updated
Microsoft.Data.SqlClient.SNI(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime(.NET/.NET Standard dependency) version tov5.2.0. #2363, which includes removing dead code and addressing static analysis warnings - Code health improvements: #1198, #1829, #1943, #1949, #1959, #1985, #2071, #2073, #2088, #2091, #2098, #2121, #2122, #2132, #2136, #2144, #2147, #2157, #2164, #2166, #2168, #2186, #2254, #2288, #2305, #2317
[Stable release 5.1.5] - 2024-01-29
This update brings the below changes over the previous release:
Fixed
- Fixed connection to unsubscribe from transaction completion events before returning it to the connection pool #2321
- Fixed InvalidCastException when reading an Always Encrypted date or time column #2324
Changed
- Changed Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Protocols.OpenIdConnect version 6.24.0 to 6.35.0 #2320 to address CVE-2024-21319
[Preview Release 5.2.0-preview5.24024.3] - 2024-01-24
This update brings the below changes over the previous release:
Added
- Added .NET 8 support #2230
- Added explicit version for major .NET version dependencies on System.Runtime.Caching 8.0.0, System.Configuration.ConfigurationManager 8.0.0, and System.Diagnostics.DiagnosticSource 8.0.0 #2303
- Added the ability to generate debugging symbols in a separate package file #2137
Changed
- Changed Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Protocols.OpenIdConnect version 6.24.0 to 6.35.0 #2290 to address CVE-2024-21319
Fixed
- Fixed connection to unsubscribe from transaction completion events before returning it to the connection pool #2301
- Fixed InvalidCastException when reading an Always Encrypted date or time column #2275
- Fixed token caching to prevent expired access tokens from being reused in a connection pool #2273
- Code health improvements: #2288, #2305, #2254, #2317
[Stable release 5.1.4] - 2024-01-09
This update brings the below changes over the previous release:
Fixed
- Fixed a deadlock problem for distributed transactions when on .NET.
Changed
- Upgraded
Azure.Identitydependency version to 1.10.3 to address CVE-2023-36414.
[Stable release 5.1.3] - 2024-01-09
This update brings the below changes over the previous release:
Fixed
- Fixed encryption downgrade issue. CVE-2024-0056
- Fixed certificate chain validation logic flow.
[Stable release 4.0.5] - 2024-01-09
Fixed
- Fixed encryption downgrade issue. CVE-2024-0056
- Fixed certificate chain validation logic flow.
[Stable release 3.1.5] - 2024-01-09
Fixed
- Fixed encryption downgrade issue. CVE-2024-0056
- Fixed certificate chain validation logic flow.
[Stable Release 2.1.7] - 2024-01-09
Fixed
- Fixed encryption downgrade issue. CVE-2024-0056
- Fixed certificate chain validation logic flow.
[Preview Release 5.2.0-preview4.23342.2] - 2023-12-08
This update brings the below changes over the previous release:
Added
- Added
SqlBatchsupport on .NET 6+ #1825, #2223 - Added Workload Identity authentication support #2159, #2264
- Added Localization support on .NET #2210
- Added support for Georgian collation #2194
- Added support for Big Endian systems #2170
Changed
- Updated
Microsoft.Data.SqlClient.SNI(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime(.NET/.NET Standard dependency) version tov5.2.0-preview1.23340.1. #2257, which includes removing dead code and addressing static analysis warnings - Improved CPU usage when
AppContextswitches are in use #2227 - Upgraded
Azure.Identitydependency version to 1.10.3 to address CVE-2023-36414, #2188 - Improved error messages when validating server certificates in managed SNI (Linux/macOS) #2060
Fixed
- Fixed an issue when using the Authentication option, but not encrypting on .NET Framework where the server certificate was being incorrectly validated #2224
- Fixed a deadlock problem for distributed transactions when on .NET #2161
- Fixed an issue with connecting to named instances on named pipes in managed SNI (Linux/macOS)#2142
- Fixed LocalDb connection issue with an invalid source when using managed SNI #2129
- Fixed an
AccessViolationExceptionwhen using a SQL Express user instance #2101 - Fixed a metadata query issue when connecting to Azure SQL Edge #2099
- Fixed file version information for .NET and .NET Standard binaries#2093
- Fixed the SPN sent for a named instance when using Kerberos authentication on Linux/macOS #2240
- Various code improvements #2091, #2098, #2121, #2122, #2132, #2136, #2144, #2147, #2157, #2164, #2166, #2168, #2186
This update brings the below changes over the previous release:
[Stable release 3.1.4] - 2023-10-31
Fixed
- Fixed Always Encrypted secure enclave retry logic for async queries. #1988
- Fixed LocalDb and managed SNI by improving the error messages and avoid falling back to the local service. #2129
- Fixed .NET and .NET Standard file version. 2093
- Fixed activity correlator to continue use of same GUID for connection activity. #1997
- Fixed FormatException when event source tracing is enabled. #1291
[Stable release 4.0.4] - 2023-10-30
Fixed
- Fixed Always Encrypted secure enclave retry logic for async queries. #1988
- Fixed LocalDb and managed SNI by improving the error messages and avoid falling back to the local service. #2129
- Fixed .NET and .NET Standard file version. 2093
- Fixed activity correlator to continue use of same GUID for connection activity. #1997
[Stable release 5.1.2] - 2023-10-26
This update brings the below changes over the previous release:
Fixed
- Fixed access violation when using SQL Express user instance. #2101
- Fixed Always Encrypted secure enclave retry logic for async queries. #1988
- Fixed LocalDb and managed SNI by improving the error messages and avoid falling back to the local service. #2129
- Fixed .NET and .NET Standard file version. 2093
- Fixed non-string values and
SqlConnectionStringBuilderproperty indexer issue. #2018 - Fixed
SqlConnectionEncryptOptiontype conversion by introducing theSqlConnectionEncryptOptionConverterattribute when using appsettings.json files. #2057 - Fixed Transient fault handling issue with
OpenAsync. #1983 - Fixed activity correlator to continue use of same GUID for connection activity. #1997
Changed
- Updated
Microsoft.Data.SqlClient.SNI(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime(.NET Core/Standard dependency) version to5.1.1. #2123
[Preview Release 5.2.0-preview3.23201.1] - 2023-07-20
This update brings the below changes over the previous release:
Added
- Added a new
AccessTokenCallBackAPI toSqlConnection. #1260 - Added support for the
SuperSocketNetLibregistry option for Encrypt on .NET on Windows. #2047
Fixed
- Fixed
SqlDataAdapter.Filland configurable retry logic issue on .NET Framework. #2084 - Fixed
SqlConnectionEncryptOptiontype conversion by introducing theSqlConnectionEncryptOptionConverterattribute when using appsettings.json files. #2057 - Fixed th-TH culture info issue on Managed SNI. #2066
Changed
- Switched to the new .NET NegotiateAuthentication API on .NET 7.0 and above for SSPI token negotiation using Managed SNI. #2063
- Removed
ignoreSniOpenTimeoutin open connection process on Windows. #2067 - Enforce explicit ordinal for internal
StringComparisonoperations. #2068 - Code health improvements: #1959, #2071, #2073, #2088
[Preview Release 5.2.0-preview2.23159.1] - 2023-06-08
This update brings the below changes over the previous release:
Added
- Added new property
RowsCopied64toSqlBulkCopy. #2004
Fixed
- Fixed socket synchronization issue during connect in managed SNI. #1029
- Fixed issue with
SqlConnectionStringBuilderproperty indexer not supporting non-string values. #2018
Changed
- Moved to new System.Data.SqlTypes APIs in .NET 7 and upper. 1934 and #1981
- Changed UseOneSecFloorInTimeoutCalculationDuringLogin App Context switch default to true and extended its effect to .NET and .NET Standard. #2012
- Updated
Microsoft.Identity.Clientversion from 4.47.2 to 4.53.0. #2031, #2055 - Code health improvement: #1985
[Stable Release 2.1.6] - 2023-04-27
Fixed
- Fixed TDS RPC error on large queries in
SqlCommand.ExecuteReaderAsync.#1986 - Fixed Default UTF8 collation conflict. #1989
- Fixed async deadlock issue when sending attention fails due to network failure. #1767
[Preview Release 5.2.0-preview1.23109.1] - 2023-04-20
This update brings the below changes over the previous release:
Added
- Added support of
SqlDiagnosticListeneron .NET Standard. #1931
Fixed
- Fixed AE enclave retry logic for async queries. #1988
- Fixed activity correlator to continue use of same GUID for connection activity. #1997
- Fixed behavior when error class is greater than 20 on connection retry. #1953
- Fixed error message when symmetric key decryption failed using Always Encrypted. #1948
- Fixed TransactionScope connection issue when Enlist is enable, Pooling is disabled and network connection type is Redirect. #1960
- Fixed TDS RPC error on large queries in SqlCommand.ExecuteReaderAsync. #1936
- Fixed throttling of token requests by calling AcquireTokenSilent. #1925
- Fixed Linux code coverage result in Build proj. #1950
- Fixed NullReferenceException in GetBytesAsync. #1906
- Fixed Transient fault handling issue with OpenAsync. #1983
- Fixed invariant mode checks. #1917
- Fixed GC behavior in TdsParser by adding array rental capability in TryReadPlpUnicodeChars. #1866
Changed
- Updated Azure Identity version from 1.7.0 to 1.8.0. #1921
- Improved parsing buffered characters in
TdsParser. #1544 - Removed reference to Microsoft.Win32.Registry since it's shipped starting with .NET 6.0. #1974
- Added Microsoft.SqlServer.Types to verify support for SqlHierarchyId and Spatial for .NET Core. #1848
- Code health improvements:#1943#1949#1198#1829
[Stable release 4.0.3] - 2023-04-20
Fixed
- Fixed throttling of token requests by calling AcquireTokenSilent in AAD Integrated/Password flows when the account is already cached.#1995
- Fixed TDS RPC error on large queries in
SqlCommand.ExecuteReaderAsync.#1987
[Stable release 5.0.2] - 2023-03-31
Fixed
- Fixed memory leak regression from #1785 using a
DisposableTemporaryOnStackstruct. #1980 - Fixed
TransactionScopeconnection issue whenEnlistisenabled,Poolingisdisabled, andNetwork Connection Typeis set toRedirect. #1978 - Fixed an incorrect exception when a symmetric key fails to decrypt a column using Always Encrypted. #1977
- Fixed TDS RPC error on large queries in
SqlCommand.ExecuteReaderAsync. #1976 - Fixed deadlock when using SinglePhaseCommit with distributed transactions. #1975
[Stable release 5.1.1] - 2023-03-28
This update brings the below changes over the previous release:
Fixed
- Fixed an incorrect exception when a symmetric key fails to decrypt a column using Always Encrypted. #1968
- Fixed
TransactionScopeconnection issue whenEnlistisenabled,Poolingisdisabled, andNetwork Connection Typeis set toRedirect. #1967 - Fixed throttling of token requests by calling
AcquireTokenSilent. #1966 - Fixed TDS RPC error on large queries in
SqlCommand.ExecuteReaderAsync. #1965 - Fixed
NullReferenceExceptioninGetBytesAsync. #1964
[Stable release 3.1.3] - 2023-03-10
Fixed
- Fixed throttling of token requests by calling AcquireTokenSilent in AAD Integrated/Password flows when the account is already cached.#1926
- Fixed TDS RPC error on large queries in SqlCommand.ExecuteReaderAsync.#1939
[Stable release 3.1.2] - 2023-02-03
Added
- Added Windows ARM64 support when targeting .NET Framework. #1908
Fixed
- Fixed thread safety of transient error list in configurable retry logic. #1911
- Fixed deadlock when using SinglePhaseCommit with distributed transactions. #1912
- Fixed Default UTF8 collation conflict. #1910
- Added CommandText length validation when using stored procedure command types. #1909
[Stable release 5.1.0] - 2023-01-19
This update brings the below changes over the previous release:
Fixed
- Fixed thread safety of transient error list in configurable retry logic. #1882
- Fixed deadlock when using SinglePhaseCommit with distributed transactions. #1801
- Fixed Dedicated Admin Connections (DAC) to localhost in managed SNI. #1865
Changed
- Updated
Microsoft.Data.SqlClient.SNI(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime(.NET Core/Standard dependency) version to5.1.0. #1889 which includes fix for AppDomain crash in issue #1418, TLS 1.3 Support, removal of ARM32 binaries, and support for theServerCertificateoption. - Code health improvements #1867 #1849
[Preview Release 5.1.0-preview2.22314.2] - 2022-11-10
This update brings the below changes over the previous release:
Breaking changes over preview release v5.1.0-preview1
Added
- Added support for .NET 6.0. #1704
- Added support for
DateOnlyandTimeOnlyforSqlParametervalue andGetFieldValue. #1813 - Added support for TLS 1.3 for .NET Core and SNI Native. #1821
- Added
ServerCertificatesupport forEncrypt=MandatoryorEncrypt=Strict. #1822 - Added Windows ARM64 support when targeting .NET Framework. #1828
Fixed
Changed
- Updated
Microsoft.Data.SqlClient.SNI(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime(.NET Core/Standard dependency) version to5.1.0-preview2.22311.2. #1831 which includes the fix for the TLS 1.3 timeout and double handshake issue, removal of ARM32 binaries, and support for theServerCertificateoption. #1822 - Reverted "Excluding unsupported TLS protocols" for issue #1151 (i.e. removed
Switch.Microsoft.Data.SqlClient.EnableSecureProtocolsByOS) by adding support for TLS 1.3. #1824 - Code health improvements #1812 #1520
[Preview Release 5.1.0-preview1.22279.3] - 2022-10-19
This update brings the below changes over the previous release:
Fixed
- Fixed
ReadAsync()behavior to register Cancellation token action before streaming results. #1781 - Fixed
NullReferenceExceptionwhen assigningnulltoSqlConnectionStringBuilder.Encrypt. #1778 - Fixed missing
HostNameInCertificateproperty in .NET Framework Reference Project. #1776 - Fixed async deadlock issue when sending attention fails due to network failure. #1766
- Fixed failed connection requests in ConnectionPool in case of PoolBlock. #1768
- Fixed hang on infinite timeout and managed SNI. #1742
- Fixed Default UTF8 collation conflict. #1739
Changed
- Updated
Microsoft.Data.SqlClient.SNI(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime(.NET Core/Standard dependency) version to5.1.0-preview1.22278.1. #1787 which includes TLS 1.3 Support and fix for AppDomain crash in issue #1418 - Changed the
SqlConnectionEncryptOptionstring parser to public. #1771 - Converted
ExecuteNonQueryAsyncto use async context object. #1692 - Code health improvements #1604 #1598 #1595 #1443
Known issues
- When using
Encrypt=Strictwith TLS v1.3, the TLS handshake occurs twice on initial connection on .NET Framework due to a timeout during the TLS handshake and a retry helper re-establishes the connection; however, on .NET Core, it will throw aSystem.ComponentModel.Win32Exception (258): The wait operation timed out.and is being investigated. If you're using Microsoft.Data.SqlClient with .NET Core on Windows 11, you will need to enable the managed SNI on Windows context switch using following statementAppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseManagedNetworkingOnWindows", true);to use TLS v1.3 or disabling TLS 1.3 from the registry by assigning0to the followingHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client\Enabledregistry key and it'll use TLS v1.2 for the connection. This will be fixed in a future release.
[Stable release 5.0.1] - 2022-10-07
Fixed
- Fixed missing
HostNameInCertificateconnection string property in .NET Framework. #1782 - Fixed async deadlock issue when sending attention fails due to network failure. #1783
- Fixed Null Reference Exception on assigning
nulltoSqlConnectionStringBuilder.Encrypt. #1784 - Fixed
ReadAsync()behavior to register Cancellation token action before streaming results. #1785 - Fixed hang on infinite timeout and managed SNI. #1798
- Fixed Default UTF8 collation conflict. #1799
Changed
- Updated
Microsoft.Data.SqlClient.SNI(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime(.NET Core/Standard dependency) version to5.0.1#1795, which includes the fix for AppDomain crash introducing in issue #1418.
[Stable release 4.1.1] - 2022-09-13
Fixed
- Fixed connection failure by not requiring Certificate Revocation List (CRL) check during authentication. #1706
- Parallelize SSRP requests on Linux and macOS when MultiSubNetFailover is specified. #1708, #1746
- Added CommandText length validation when using stored procedure command types. #1709
- Fixed NullReferenceException during Azure Active Directory authentication. #1710
- Fixed null SqlBinary as rowversion. #1712
- Fixed table's collation overriding with default UTF8 collation. #1749
Changed
- Updated
Microsoft.Data.SqlClient.SNI(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime(.NET Core/Standard dependency) version tov4.0.1#1755, which includes the fix for AppDomain crash introducing in issue #1418 - Various code improvements: #1711
[Stable release 4.0.2] - 2022-09-13
Fixed
- Fixed connection failure by not requiring Certificate Revocation List (CRL) check during authentication. #1718
- Parallelize SSRP requests on Linux and macOS when MultiSubNetFailover is specified. #1720, #1747
- Added CommandText length validation when using stored procedure command types. #1721
- Fixed NullReferenceException during Azure Active Directory authentication. #1722
- Fixed null SqlBinary as rowversion. #1724
- Fixed table's collation overriding with default UTF8 collation. #1750
Changed
- Updated
Microsoft.Data.SqlClient.SNI(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime(.NET Core/Standard dependency) version tov4.0.1#1754, which includes the fix for AppDomain crash introducing in issue #1418 - Various code improvements: #1723
[Stable Release 2.1.5] - 2022-08-30
Fixed
- Added CommandText length validation when using stored procedure command types. #1726
- Fixed Kerberos authentication failure when using .NET 6. #1727
- Removed union overlay design and use reflection in
SqlTypeWorkarounds. #1729
[Stable release 3.1.1] - 2022-08-12
Fixed
- Fixed null SqlBinary as rowversion. #1700
- Fixed Kerberos authentication failure when using .NET 6. #1696
- Fixed NullReferenceException during Azure Active Directory authentication. #1695
- Removed union overlay design and use reflection in
SqlTypeWorkarounds. #1699
[Stable release 5.0.0] - 2022-08-05
This update brings the below changes over the previous release:
Added
- Added support for
TDS 8. To use TDS 8, users should specifyEncrypt=Strictin the connection string. #1608 - Added
TDS 8version for TDSLogin. #1657
Fixed
- Fixed null SqlBinary as rowversion. #1688
- Fixed KeyNotFoundException for the
FailoverPartnerkey on SQL servers with availability group configured. #1614 - Fixed small inconsistency between netcore and netfx for
EncryptionOptions. #1672 - Fixed
Microsoft.SqlServer.Servernetcore project package reference. #1654
Changed
- Updated
AuthProviderInfostruct to be matched the changes in native SNI forTDS 8server certificate validation. #1680 - Updated default system protocol for
TDS 8on managed code. #1678 - Updated
Microsoft.Data.SqlClient.SNI(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime(.NET Core/Standard dependency) version to5.0.0. #1680 - Updated IdentityModel dependency from 6.8.0 to 6.21.0 and IdentityClient from 4.32.2 to 4.45.0. #1646
- Changed from union overlay design to reflected interfaces for SqlTypes. 1647
[Preview Release 5.0.0-preview3.22168.1] - 2022-06-16
This update brings the below changes over the previous release:
Breaking changes over preview release v5.0.0-preview2
- Dropped classes from the
Microsoft.Data.SqlClient.Servernamespace and replaced them with supported types from the Microsoft.SqlServer.Server package.#1585 The affected classes and enums are:- Microsoft.Data.SqlClient.Server.IBinarySerialize -> Microsoft.SqlServer.Server.IBinarySerialize
- Microsoft.Data.SqlClient.Server.InvalidUdtException -> Microsoft.SqlServer.Server.InvalidUdtException
- Microsoft.Data.SqlClient.Server.SqlFacetAttribute -> Microsoft.SqlServer.Server.SqlFacetAttribute
- Microsoft.Data.SqlClient.Server.SqlFunctionAttribute -> Microsoft.SqlServer.Server.SqlFunctionAttribute
- Microsoft.Data.SqlClient.Server.SqlMethodAttribute -> Microsoft.SqlServer.Server.SqlMethodAttribute
- Microsoft.Data.SqlClient.Server.SqlUserDefinedAggregateAttribute -> Microsoft.SqlServer.Server.SqlUserDefinedAggregateAttribute
- Microsoft.Data.SqlClient.Server.SqlUserDefinedTypeAttribute -> Microsoft.SqlServer.Server.SqlUserDefinedTypeAttribute
- (enum) Microsoft.Data.SqlClient.Server.DataAccessKind -> Microsoft.SqlServer.Server.DataAccessKind
- (enum) Microsoft.Data.SqlClient.Server.Format -> Microsoft.SqlServer.Server.Format
- (enum) Microsoft.Data.SqlClient.Server.SystemDataAccessKind -> Microsoft.SqlServer.Server.SystemDataAccessKind
Added
- Added support for
TDS 8. To use TDS 8, users should specify Encrypt=Strict in the connection string. Strict mode disables TrustServerCertificate (always treated as False in Strict mode). HostNameInCertificate has been added to help some Strict mode scenarios. #1608 - Added support for specifying Server SPN and Failover Server SPN on the connection. #1607
- Added support for aliases when targeting .NET Core on Windows. #1588
Fixed
- Fixed naming, order, and formatting for
SqlDiagnosticsListeneron .NET Core and .NET. #1637 - Fixed NullReferenceException during Azure Active Directory authentication. #1625
- Added CommandText length validation when using stored procedure command types. #1484
- Fixed
GetSchema("StructuredTypeMembers")to return correct schema information. #1500, #1639 - Fixed NullReferenceException when using
SqlDependency.Startagainst an Azure SQL Database.#1294 - Send the correct retained transaction descriptor in the MARS TDS Header when there is no current transaction on .NET 5+ and .NET Core. #1624
- Parallelize SSRP requests (instance name resolution) on Linux and macOS when MultiSubNetFailover is specified. #1578
- Adjust the default ConnectRetryCount against Azure Synapse OnDemand endpoints #1626
Changed
- Code health improvements #1353 #1354 #1525 #1186
- Update Azure Identity dependency from 1.5.0 to 1.6.0.#1611
- Improved Regex for SqlCommandSet #1548
- Rework on
TdsParserStateObjectManagedwith nullable annotations. #1555
[Preview Release 5.0.0-preview2.22096.2] - 2022-04-06
This update brings the below changes over the previous release:
Breaking changes over preview release v5.0.0-preview1
- Dropped support for .NET Framework 4.6.1 #1574
Fixed
- Fixed connection failure by skipping Certificate Revocation List (CRL) check during authentication #1559
Changed
- Updated
Microsoft.Data.SqlClient.SNI(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime(.NET Core/Standard dependency) version to5.0.0-preview2.22084.1. #1563 - Updated
Azure.Identityversion to1.5.0andMicrosoft.Identity.Clientversion to4.30.1#1462 - Replaced AlwaysEncryptedAttestationException with SqlException #1515
- Improved error message when adding wrong type to SqlParameterCollection #1547
- Code health improvements #1343 #1370 #1371 #1438 #1483
[Stable release 3.1.0] - 2022-03-30
Added
- Added new Attestation Protocol
NoneforVBSenclave types. This protocol will allow users to forgo enclave attestation for VBS enclaves. #1539 - Included
42108and42109error codes to retriable transient errors list. #1560
Fixed
- Changed EnclaveDelegate.Crypto GetEnclaveProvider to use a thread safe concurrent dictionary. [#1564](https://github.com/dotnet/SqlClient/pull/1564
[Preview Release 5.0.0-preview1.22069.1] - 2022-03-09
Added
- Added SqlDataSourceEnumerator. #1430
- Added new attestation protocol
Noneoption to forgo enclave attestation when using VBS enclaves. #1425 and #1419 - Added a new AppContext switch to suppress insecure TLS warnings. #1457
Fixed
- Fixed all documentation paths to Unix format path. #1442
- Fixed thread safety issue for
GetEnclaveProviderby converting dictionary to concurrent dictionary. #1451
Changed
- Updated
Microsoft.Data.SqlClient.SNI(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime(.NET Core/Standard dependency) version tov5.0.0-preview1.22062.1. #1537 - Modernized style in ValueUtilSmi. #1351
- Changed SQL server codenames to version names. #1439
- Prevented subtype generation in project files. #1452
- Changed
Array.CopytoBuffer.BlockCopyfor byte arrays. #1366 - Changed files in csproj to be alphabetically sorted in netfx and netcore. #1364
- Sqlstream, SqlInternalTransaction and MetaDataUtilsSmi are moved to shared folder. #1337, #1346 and #1339
- Various code improvements: #1197, #1313,#1330,#1366, #1435,#1478
[Stable release 4.1.0] - 2022-01-31
Added
- Added new Attestation Protocol
NoneforVBSenclave types. This protocol will allow users to forgo enclave attestation for VBS enclaves. #1419 #1425
[Stable release 4.0.1] - 2022-01-17
Added
Added AppContext switch SuppressInsecureTLSWarning to allow suppression of TLS security warning when using Encrypt=false in the connection string. #1457
Fixed
- Fixed Kerberos authentication failure when using .NET 6. #1411
- Fixed connection failure when using
SqlLocalDBinstance pipe name. #1433 - Fixed a failure when executing concurrent queries requiring enclaves. #1451
- Updated obsolete API calls targeting .NET 6. #1401
[Stable Release 4.0.0] - 2021-11-18
Added
- Added missing
SqlClientLoggerclass to .NET Core refs and missingSqlClientLogger.LogWarningmethod in .NET Framework refs #1392
Changed
- Avoid throwing unnecessary exception when an invalid
SqlNotificationInfovalue is received from SQL Server #1378 - Updated
Microsoft.Data.SqlClient.SNI(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime(.NET Core/Standard dependency) version tov4.0.0#1391
[Preview Release 4.0.0-preview3.21293.2] - 2021-10-20
This update brings the below changes over the previous release:
Breaking changes over preview release v4.0.0-preview2
- Dropped support for .NET Core 2.1 #1272
- [.NET Framework] Exception will not be thrown if a User ID is provided in the connection string when using
Active Directory Integratedauthentication #1359
Added
- Add
GetFieldValueAsync<T>andGetFieldValue<T>support forXmlReader,TextReader,Stream#1019
Fixed
- Fixed
FormatExceptionwhen opening a connection with event tracing enabled #1291 - Fixed improper initialization of
ActiveDirectoryAuthenticationProvider#1328 - Fixed
MissingMethodExceptionwhen accessingSqlAuthenticationParameters.ConnectionTimeout#1336 - Fixed data corruption issues by reverting changes to async cancellations #1352
- Fixed performance degradation by reverting changes to MARS state machine #1357
- Fixed bug where environment variables are ignored when using
Active Directory Defaultauthentication #1360
Changed
- Removed attributes for classes used in Microsoft.VSDesigner due to lack of support for Microsoft.Data.SqlClient #1296
- Disable encryption when connecting to SQL LocalDB #1312
- Various code health and performance improvements. See milestone for more info.
[Stable Release 3.0.1] - 2021-09-24
Fixed
- Fixed async thread blocking issues on
SqlConnection.Open()for active directory authentication modes. #1270 - Fixed unknown transaction state issues when prompting delegated transaction. 1247
- Fixed issue with connection encryption to ensure connections fail when encryption is required. #1233
- Fixed bug with
LegacyRowVersionNullBehaviorApp Context switch. #1246 - Fixed recursive calls to
RetryLogicProviderwhen callingSqlCommand.ExecuteScalarAsync. #1245 - Fixed async deadlock scenarios in web contexts with configurable retry logic provider. #1245
- Fixed deadlock in transaction using .NET Framework. #1243
- Fixed issue where connection goes to unusable state. #1238
[Preview Release 4.0.0-preview2.21264.2] - 2021-09-21
This update brings the below changes over the previous release:
Breaking changes over preview release v4.0.0-preview1
- Removed
Configurable Retry Logicsafety switch. #1254
Added
- Added support for
SqlFileStreamon Windows using .NET Standard 2.0 and above. #1240 - Added support for localdb
shared instanceusing managed SNI. #1237
Fixed
- Fixed
.NET decimalconversion fromSqlDecimal. #1179 - Fixed
Event Sourcechanges on TryBeginExecuteEvent and WriteEndExecuteEvent to address the failure on other MS products such as OpenTelemetry and Application Insight. #1258 - Fixed command's async cancellation. #956
- Fixed deadlock in transaction using .NET Framework. #1242
- Fixed unknown transaction state issues when prompting delegated transaction. 1216
Changed
[Stable Release 2.1.4] - 2021-09-20
Fixed
- Fixed issue with connection encryption to ensure connections fail when encryption is required. #1232
- Fixed issue where connection goes to unusable state. #1239
[Preview Release 4.0.0-preview1.21237.2] - 2021-08-25
Breaking changes over stable release 3.0.0
- Changed
Encryptconnection string property to betrueby default. #1210 - The driver now throws
SqlExceptionreplacingAggregateExceptionfor active directory authentication modes. #1213 - Dropped obsolete
Asynchronous Processingconnection property from .NET Framework. #1148
Added
- Added
SqlCommand.EnableOptimizedParameterBindingproperty that when enabled increases performance for commands with very large numbers of parameters. #1041 - Included
42108and42109error codes to retriable transient errors list. #1215 - Added new App Context switch to use OS enabled client protocols only. #1168
- Added
PoolBlockingPeriodconnection property support in .NET Standard. #1181 - Added support for
SqlDataReader.GetColumnSchema()in .NET Standard. #1181 - Added PropertyGrid support with component model annotations to
SqlConnectionStringBuilderproperties for .NET Core. #1152
Fixed
- Fixed issue with connectivity when TLS 1.3 is enabled on client and server. #1168
- Fixed issue with connection encryption to ensure connections fail when encryption is required. #1210
- Fixed issue where connection goes to unusable state. #1128
- Fixed recursive calls to
RetryLogicProviderwhen callingSqlCommand.ExecuteScalarAsync. #1220 - Fixed async deadlock scenarios in web contexts with configurable retry logic provider. #1220
- Fixed
EntryPointNotFoundExceptioninInOutOfProcHelperconstructor. #1120 - Fixed async thread blocking issues on
SqlConnection.Open()for active directory authentication modes. #1213 - Fixed driver behavior for Always Encrypted with secure enclaves to not fail when no user parameters have been provided. #1115
- Fixed bug with
LegacyRowVersionNullBehaviorApp Context switch. #1182 - Fixed issues in Strings.resx file containing error messages. #1136 #1178
Changed
- Updated error code to match with Windows when certificate validation fails in non-Windows client environments. #1130
- Removed designer attributes from
SqlCommandandSqlDataAdapter. #1132 - Updated configurable retry logic default retriable error list. #1125
- Improved performance by changing
SqlParameterbool fields to flags. #1064 - Improved performance by implementing static delegates. #1060
- Optimized async method allocations in .NET Framework by porting changes from .NET Core. #1084
- Various code improvements #902 #925 #933 #934 #1024 #1057 #1122 #1133 #1134 #1141 #1187 #1188 #1223 #1225 #1226
[Stable Release 3.0.0] - 2021-06-09
Added
- Added support for column encryption key caching when the server supports retrying queries that require enclave computations #1062
- Added support for configurable retry logic configuration file in .NET Standard #1090
Changed
- Updated
Microsoft.Data.SqlClient.SNI(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime(.NET Core/Standard dependency) version tov3.0.0#1102 - Improved event counter display information #1091
Breaking Changes
- Modified column encryption key store provider registrations to give built-in system providers precedence over providers registered on connection and command instances. #1101
[Stable Release 2.1.3] - 2021-05-21
Fixed
- Fixed wrong data blended with transactions in .NET Core by marking a connection as doomed if the transaction completes or aborts while there is an open result set #1051
- Fixed race condition issues between SinglePhaseCommit and TransactionEnded events #1049
[Preview Release 3.0.0-preview3.21140.5] - 2021-05-20
Added
- Added support for "Active Directory Default" authentication mode #1043
- Added support for connection-level and command-level registration of custom key store providers to enable multi-tenant applications to control key store access #1045 #1056 #1078
- Added IP address preference support for TCP connections #1015
Fixed
- Fixed corrupted connection issue when an exception occurs during RPC execution with TVP types #1068
- Fixed race condition issues between SinglePhaseCommit and TransactionEnded events #1042
Changed
- Updated error messages for enclave exceptions to include a link to a troubleshooting guide. #994
- Changes to share common files between projects #1022 #1038 #1040 #1033 #1028 #1039
[Preview Release 3.0.0-preview2.21106.5] - 2021-04-16
Breaking Changes over preview release v3.0.0-preview1
User Idconnection property now requiresClient Idinstead ofObject Idfor User-Assigned Managed Identity #1010SqlDataReadernow returns aDBNullvalue instead of an emptybyte[]. Legacy behavior can be enabled by settingAppContextswitch Switch.Microsoft.Data.SqlClient.LegacyRowVersionNullBehavior #998
Added
- Microsoft.Data.SqlClient now depends on Azure.Identity library to acquire a token for "Active Directory Managed Identity/MSI" and "Active Directory Service Principal" authentication modes. #1010
- Upgraded Native SNI dependency to v3.0.0-preview1 along with enhanced event tracing support #1006
Fixed
- Fixed wrong data blended with transactions in .NET Core by marking a connection as doomed if the transaction completes or aborts while there is an open result set#1023
- Fixed derived parameters containing incorrect TypeName #1020
- Fixed server connection leak possibilities when an exception occurs in pooling layer #890
- Fixed IP connection resolving logic in .NET Core #1016 #1031
Changed
- Performance improvements in
SqlDateTimetoDateTimeinternal conversion method #912 - Improved memory allocation by avoiding unnecessary context switching 1008
- Updated
Microsoft.Identity.Clientversion from 4.21.1 to 4.22.0 #1036 - Various performance improvements #963 #996 #1004 #1012 #1017
- Event source tracing improvements #1018
- Changes to share common files between NetFx and NetCore source code #871 #887
[Preview Release 3.0.0-preview1.21075.2] - 2021-03-15
Breaking Changes over stable release v2.1
- The minimum supported .NET Framework version has been increased to v4.6.1. .NET Framework v4.6.0 is no longer supported. #899
Added
- Added support for Configurable Retry Logic #693 #966
- Added support for Event counters in .NET Core 3.1+ and .NET Standard 2.1+ #719
- Added support for Assembly Context Unloading in .NET Core #913
- Added missing
System.Runtime.Cachingdependency for .NET Standard assemblies #877
Fixed
- Fixed wrong results issues by changing the timeout timer to ensure a correct execution state #906
- Fixed Kerberos authentication issues when configured Server Principal Name (SPN) didn't contain default port #930
- Fixed MARS header errors when
MakeReadAsyncBlockingApp Context switch is set tofalse#910 #922 - Fixed unwanted exceptions being thrown from
SqlDataReader.Dispose#920 - Fixed issues connecting to SQL Server instance with instance name specified from Unix environment #870
- Fixed TCP Keep Alive issues in .NET Core #854
- Fixed Kerberos Authentication issues caused due to regression #845
- Fixed issues with System-Assigned Managed Identity in Azure Functions #829
- Fixed missing error messages in Managed SNI #882
- Fixed event source trace string issue #940
Changed
- Changed App Context switch
MakeReadAsyncBlockingdefault tofalse#937 - Replaced usage of
BinaryFormatterwithDataContractSerializer#869 - Prohibited
DtdProcessingonXmlTextReaderinstance in .NET Core #884 - Improved performance by reducing memory allocations in
SerializeEncodingChar/WriteEncodingCharand some options boxing #785 - Improved performance by preventing orphaned active packets being GC'ed without clear #888
- Various performance improvements #889 #900
- Partial event source tracing improvements in .NET Core #867 #897
- Changes to share common files between NetFx and NetCore source code #827 #835 #838 #881
[Stable Release 1.1.4] - 2021-03-10
Fixed
- Fixed wrong results issues by changing the timeout timer to ensure a correct execution state #950
- Fixed MARS header contains errors issue against .NET Framework 4.8+ #959
[Stable Release 2.1.2] - 2021-03-03
Fixed
- Fixed issue connecting with instance name from a Linux/macOS environment #874
- Fixed wrong results issues by changing the timeout timer to ensure a correct execution state #929
- Fixed a vulnerability by prohibiting
DtdProcessingonXmlTextReaderinstances in .NET Core #885 - Fixed Kerberos authentication when an SPN does not contain the port #935
- Fixed missing error messages in Managed SNI #883
- Fixed missing
System.Runtime.Cachingdependency for .NET Standard assemblies #878 - Fixed event source tracing issues #941
- Fixed MARS header contains errors issue against .NET Framework 4.8.1 #928
[Stable Release 2.1.1] - 2020-12-18
Fixed
- Fixed issue with System-Assigned Managed Identity in Azure Functions #841
- Fixed issue with Kerberos Authentication for .NET Core in Unix environments #848
- Fixed issue with TCP Keep Alive for .NET Core in Unix environments #855
[Stable Release 2.1.0] - 2020-11-19
Added
- Microsoft.Data.SqlClient symbols are now source-linked #789
- Added an API to clear cached access tokens from the token provider #800
- Added
SqlFacetAttributeimplementation #757
Fixed
- Fixed
InvalidOperationExceptionandNotSupportedExceptionerrors due toWriteAsynccollisions #796 - Fixed incorrect Settings.Async flag in
ExecuteXmlReaderAsync#782 - Fixed a regression in Windows Integrated authentication when using managed networking #777
- Fixed Bulk Copy Async deadlock issues with custom
IDataReaderwhen usingSqlDataReaderinternally #779 - Fixed a serialization issue with
SqlExceptionin .NET Core #780
Changed
- Updated versions of
Microsoft.IdentityModelpackage dependencies #794
[Preview Release 2.1.0-preview2.20297.7] - 2020-10-23
Added
- Added support for Azure Active Directory Managed Identity authentication #730
- Added support to provide a user-defined application client ID when using Active Directory authentication #740
- Added the "Command Timeout" connection string property to set a default timeout for all commands executed with the connection #722
- Added support for Always Encrypted on all supported platforms for .NET Standard 2.0 #756
Fixed
- Fixed unobserved exception issue when a timeout occurs before a faulted task completes with an exception #688 #773
- Fixed an issue where driver continues to prompt for credentials when using Azure Active Directory authentication #770
Changed
- Updated
Microsoft.Data.SqlClient.SNI(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime(.NET Core/Standard dependency) version tov2.1.1and removed symbols fromMicrosoft.Data.SqlClient.SNI.runtime, which are now published to Microsoft Symbols Server #764 - Updated
Microsoft.Identity.Clientdependency version tov4.21.1#765 - Performance improvements when establishing an encrypted channel by removing sync over async method calls #541
- Performance improvements by replacing heap-allocated arrays with Spans #667
- Moved common files to shared folder between .NET Framework and .NET Core implementation #734 #753
[Stable Release 2.0.1] - 2020-08-25
Added
- Added support for a new Configuration Section,
SqlClientAuthenticationProviders(duplicate of existingSqlAuthenticationProviders), to allow co-existence of configurations for both drivers, "System.Data.SqlClient" and "Microsoft.Data.SqlClient" #701
Fixed
- Fixed pooled connection re-use on access token expiry issue when using Active Directory authentication modes #639
- Fixed transient fault handling for Pooled connections #638
- Fixed Enclave session cache issue with Azure Database #628
- Reverted changes to return empty DataTable from GetSchemaTable to return null as before. #697
- Fixed configuration section collision issue with System.Data.SqlClient type #701
- Fixed blank error message [HTTP Provider] issues due to unexpected pre-login failures when using Native SNI. Fixed with Microsoft.Data.SqlClient.SNI v2.0.1 and Microsoft.Data.SqlClient.SNI.runtime v2.0.1 release versions.
[Preview Release 2.1.0-preview1.20235.1] - 2020-08-21
Added
- Added support for Always Encrypted with secure enclaves on Unix for .NET Core 2.1+ and on all supported platforms for .NET Standard 2.1+ #676
- Added support for Azure Active Directory Device Code Flow authentication #597
- Added Sensitivity Rank support in Sensitivity Classification information #626
- Added support to obtain
ServerProcessId(SPID) information on an activeSqlConnectioninstance #660 - Added support for a new Configuration Section,
SqlClientAuthenticationProviders(duplicate of existingSqlAuthenticationProviders), to allow co-existence of configurations for both drivers, "System.Data.SqlClient" and "Microsoft.Data.SqlClient" #702 - Added TraceLogging in Native SNI to extend
SqlClientEventSourcesupport #650 - Updated Microsoft.Data.SqlClient.SNI (.NET Framework dependency) and Microsoft.Data.SqlClient.SNI.runtime (.NET Core/Standard dependency) version to v2.1.0 with trace logging implementation #705
Fixed
- Fixed Enclave session cache issue with Azure Database #686
- Fixed pooled connection re-use on access token expiry issue when using Active Directory authentication modes #635
- Fixed transient fault handling for Pooled connections #637
- Fixed SPN generation issue when no port is provided #629
- Fixed missing null checks for
SqlErrorsinSqlExceptionfor .NET Framework implementation #698
Changed
- Performance improvements by fixing unnecessary allocations with EventSource implementation #684
- Reverted changes to return empty DataTable from GetSchemaTable to return null as before. #696
- Removed multiple
CacheConnectionStringPropertiescalls when settingConnectionStringproperties #683 - Code Improvements by only checking inexact match when no exact match is found for an embedded resource #668
- Changed
_SqlMetaDatato lazy initialize hidden column map #521 - Renamed internal string resource file and helpers for .NET Core implementation #671
- Performance improvements by reworking
ExecuteReaderAsyncto minimize allocations #528 - Performance improvements by moving
DataReadercaches to internal connection #499 - Moved common files to shared folder between .NET Framework and .NET Core implementation #618 #625
[Stable Release 2.0.0] - 2020-06-16
Added
- Added internal driver support to provide resiliency to DNS failures #594
- Added support for
Active Directory Integrated,Active Directory InteractiveandActive Directory Service Principalauthentication mode for .NET Core and .NET Standard #560 - Added support for
Active Directory Service Principalauthentication mode for .NET Framework #560 - Added support for optional
ORDERhints inSqlBulkCopyfor improved performance #540
Fixed
- Fixed
SqlSequentialStreammultipacket read stalling issue in .NET Core #603 - Fixed code page issue for Kazakh collation in SQL Server #584
- Fixed stalled application issues when end of stream is reached #577
- Fixed driver behavior to not throw exception for invalid configuration file #573
- Fixed Object null reference issue when failover partner is set #588
- Fixed
applicationintentconnection string property issue #585
Changed
- Raise warning message when insecure TLS protocols are in use #591
Breaking Changes
- Modified enclave provider interface
SqlColumnEncryptionEnclaveProviderto be internal #602 - This change is not likely to impact customer applications since secure enclaves is a relatively new feature and they would have had to implement their own enclave provider, which is not a trivial task. - Updated
SqlClientMetaDataCollectionNamesexposed constants by removing non-existing constants and adding new to the metadata collection #580
[Preview Release 2.0.0-preview4.20142.4] - 2020-05-21
Added
- Microsoft.Data.SqlClient (.NET Core and .NET Standard) on Windows is now dependent on Microsoft.Data.SqlClient.SNI.runtime, replacing the previous dependency on runtime.native.System.Data.SqlClient.SNI #570
- The new Microsoft.Data.SqlClient.SNI.runtime dependency adds support for the ARM platform along with the already supported platforms ARM64, x64 and x86 on Windows #570
- Improved driver performance by introducing managed packet recycling #389
Fixed
- Fixed
SqlBulkCopyto work with database columns containing metadata about data classification #568 - Fixed unsafe cast in
SqlExceptionforSerializationEntry.Value - Fixed null reference exceptions in
SqlDelegatedTransactionmethods #563
Changed
- Standardized connection string properties for enhanced user experience #534
- Improved performance by reducing eventsource tracing related to allocations from TVP write methods #557 #564
Breaking Changes
- For .NET Framework applications consuming Microsoft.Data.SqlClient, the
SNI.dllfiles previously downloaded to thebin\x64andbin\x86folders are now namedMicrosoft.Data.SqlClient.SNI.x64.dllandMicrosoft.Data.SqlClient.SNI.x86.dlland will be downloaded to thebindirectory, to support auto-loading in the application process #570. This change is not going to impact client applications unless a direct reference has been made toSNI.dllor the x86 and x64 folders.
[Stable Release 1.1.3] - 2020-05-15
Fixed
- Fixed driver behavior to not perform enlistment of pooled connection on aborted transaction #551
- Fixed issues introduced with MARS TDS Header fix in last release by reverting original change that caused issues. #550
[Preview Release 2.0.0-preview3.20122.2] - 2020-05-01
Added
- Allow passing username with Active Directory Interactive Authentication in .NET Framework #492
- Allow large UDT buffers for .NET Framework #456
- Added "Transaction Id" and "Client Version" in Diagnostic Source traces #515
- Added new
SqlConnectionOverridesAPIs to performSqlConnection.Open()with fail fast option #463
Fixed
- Addressed MARS TDS Header errors by reverting changes to make
SqlDataReader.ReadAsync()non-blocking #547 - Fixed driver behavior to not perform enlistment of pooled connection in aborted transaction #543
- Fixed wrong application domain selected when starting
SqlDependencyListener#410 - Added missing refs for
RowCopiedproperty inSqlBulkCopy#508
Changed
- Improved performance by removing unwanted method calls in Event Source tracing #506
- Removed Diagnostic Source and Configuration Manager dependencies from .NET Standard implementation #535
- Removed redundant calls to
DbConnectionPoolKey.GetType()#512
Breaking Changes
- Updated driver to perform decimal scale rounding to match SQL Server behavior #470
- Standardized App Context switch name that enables Managed SNI on Windows for .NET Core and .NET Standard (break only applies to 2.0 preview releases that introduced the switch) #548
[Stable Release 1.1.2] - 2020-04-15
Added
Fixed
- Fixed the ConnectionString's password persistence in .NET Core. #489
- Addressed MARS TDS header containing errors #510
Changed
- Updated driver libraries to be CLS Compliant #522
[Preview Release 2.0.0-preview2.20084.1] - 2020-03-24
Added
- Added support for capturing EventSource traces in .NET Framework, .NET Core, and .NET Standard applications #399 #461 #479 #483 #484
- Added support for Cross-platform TCP Keep Alive applicable to .NET Core 3.1+ applications #395
- Added support for enabling Managed networking implementation on Windows applicable to .NET Core and .NET Standard applications #477
- Added
RowsCopiedproperty inSqlBulkCopyto expose count of copied rows #409 - Added "NeutralResourcesLanguage" attribute for .NET Framework assembly #433
- Added caching for invariant culture check result #376
- Added cached
SqlReferenceCollection.FindLiveReaderContextobjects #380
Fixed
- Fixed Access Token behavior in connection pool to perform string comparison #443
- Fixed concurrent connection speed issues when connecting with Azure Active Directory Authentication modes in .NET Core #466
- Fixed issues with
Passwordpersistence in Connection String #453
Changed
- Updated all driver assemblies to be CLS Compliant #396
- Updated Bulk Copy error messages to also include Column, Row and non-encrypted Data information #437
- Updated error messages for "Always Encrypted - Secure Enclaves" to handle 'Attestation Protocol' and fixed typos #421 #397
- Removed sync over async in
SNINpHandle.EnableSsl#474 - Changed non-generic
ArrayListtoList<T>inSqlBulkCopy#457 - Multiple performance improvements #377 #378 #379
Breaking Changes
- The driver will now perform Server Certificate validation when TLS encryption is enforced by the target Server, which is the default for Azure connections #391
SqlDataReader.GetSchemaTable()now returns an emptyDataTableinstead of returningnull#419
[Stable Release 1.1.1] - 2020-02-14
Fixed
- Fixed deadlock issues by reverting async changes to
SNIPacket#425
Changed
- Updated SNI package reference to include version range #425
[Preview Release 2.0.0-preview1.20021.1] - 2020-01-21
Added
- Added support to allow large UDT buffer size (upto
Int.MaxValue) as supported by SQL Server starting TDS 7.3 #340
Fixed
- Fixed issues with
SqlCommandSetnot working with Byte Array parameters #360 - Fixed Statement command cancellation in Managed SNI #248 - Ported dotnet/corefx#38271
- Fixed zero connection timeout issue in Managed SNI #332
- Fixed "DataType" metadata information for TinyInt datatype to be
System.Byte#338 - Fixed driver behavior to use
CancellationTokenResourceonly for non-infinite timeout and cleanup after usage #339 - Fixed
ConnectionTimeandClientConnectionIdreported bySqlStatisticswhen connection is closed #341 - Fixed deadlock issues by reverting async changes to
SNIPacket#349
Changed
- Improved performance of Managed SNI by removing double fetch of domain name #366
- Improved performance of Async Method Allocations in Managed SNI #328
- Improved performance of Managed SNI by enhancing utilization of resources #173 - Ported dotnet/corefx#35363 and dotnet/corefx#40732
- Improved performance of Managed SNI RPC Parameter Usage #209 - Ported dotnet/corefx#34049
- Changed enclave key map to be lazy initialized #372
- Changed
Receive()andReceiveAsync()implementation to receive null packets on failure #350 - Changed
EnclaveProviderBasecaching implementation to support Async Scenarios (Introduces breaking changes) #346
[Stable Release 1.1.0] - 2019-11-20
Added
- Added support for |DataDirectory| macro in
AttachDBFilenamefor .NET Core client #284
Fixed
- Fixed connection resiliency check #310
- Fixed
SNIPacket.ReadFromStreamAsyncto not consume sameValueTasktwice #295 - Fixed driver behavior to not send Attention signal for successful Bulk Copy operation #308
- Fixed driver behavior to abort connection when encountering
SqlExceptiononSqlTransaction.Commit#299 - Fixed driver behavior to not throw exception on invalid app.config files #319
Changed
- Improved async read performance by adding multi-packet target buffer caching #285
- Improved performance of
TdsParserStateObjectandSqlDataReadersnapshot mechanisms #198 - Updated
SqlDataReader.Closedocumentation #314
[Preview Release 1.1.0-preview2.19309.1] - 2019-11-04
Added
- Add support for secure enclaves with Always Encrypted #293
Fixed
- Setting the value
DbParameter.DbTypetoDbType.Timeproperty fails after setting the Value property #5 SQLDataAdapter.FillSchemadoesn't mark computed columns as readonly #275SqlDependency.StartthrowsFileNotFoundException#260- Misleading
ADP_OpenReaderExistsexception message on MARS-disabled Sql Connection when incorrectly doing parallel requests #82 - SqlClient ManualTest
MARSSyncTimeoutTestfails in managed mode #108 System.Data.SqlClient.SqlInternalConnectionTdsconstructor purges original call stack when re-throwing an exception #100InvalidOperationException(SqlException)onSqlBulkCopy#221- Exception message grammar: "An SqlParameter [...] is not contained by this
SqlParameterCollection" #159 - Fixing incorrect event id and opcode for the
SqlEventSource#241
Changed
- Update dependency to Microsoft.Data.SqlClient.SNI v1.1.0 #276
- Correct timeout remarks for async command methods #264
- Improve
SqlBulkCopytruncation error message #256 - Intellisense tooltip for
SqlCommand'sCommandTimeoutdoesn't describe units #33 - Enable SQL Command text for non-stored procs in EventSource events for .NET Framework 242
- Many test changes to support a public CI
[Preview Release 1.1.0-preview1.19275.1] - 2019-10-02
Added
- Added
SqlFileStreamsupport for .NET Framework withMicrosoft.Data.SqlTypes.SqlFileStreamclass introduced. #210 - Added support for Visual Studio Intellisense with XML Documentation. #210
Changed
- Synchronized ref definitions with driver classes. #180
- Updated
SNINativeMethodWrapperto provide the underlying error in the inner exception when we fail to load SNI.dll. #225 - Added .editorconfig file and set formatting rules. #193
- Changes done to handle statistics well and to cleanup
AutoResetEventon disconnect. #232
[Hotfix & Stable Release 1.0.19269.1] - 2019-09-26
Fixed Issues
SqlCommand.StatementCompletedevent never being fired #212- Added missing
Authenticationproperty toSqlConnectionStringBuilderreference assembly - Reverted API changes in
SqlAuthenticationParameterswhich had changed thepublic string Resourceproperty topublic string[] Scopes
[Hotfix & Stable Release 1.0.19249.1] - 2019-09-06
Fixed Issues
- Fixed issues with large data reading in Unix applications when data is spanned over multiple packets. #171
[Stable Release 1.0.19239.1] - 2019-08-27
Initial release. Release Notes uploaded in 1.0.md