Releases: dotnet/SqlClient
Preview Release v6.1.0-preview1
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 Source
parameter 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
SqlBulkCopy
to explicitly identify mismatched column names. #3183. - Optimized outgoing SSPI blob handling using
IBufferWriter<byte>
. #2452. - Replaced
byte[]
withstring
for 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).
New Contributors
- @emmanuel-ferdman made their first contribution in #3041
- @MaceWindu made their first contribution in #3134
- @JNjenga made their first contribution in #3183
- @Midhunnnk made their first contribution in #3250
Stable release v5.2.3
This update brings the following changes since the 5.2.2 release:
Fixed
- Fixed possible
NullPointerException
during 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 v5.1.7
This update brings the following changes since the 5.1.6 release:
Fixed
- Fixed possible
NullPointerException
during 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 v6.0.2
This update brings the below changes over the previous release:
Fixed
- Fixed possible
NullPointerException
during 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 v6.0.1
Released to NuGet.org on 2025-01-23
Breaking Changes
- Removed support for .NET Standard. #2386
- Removed support for .NET 6 #2927
- Removed UWP (UAP) references. #2483
- Removed SQL 2000 client-side debugging support for .NET Framework #2981, #2940
Added
JSON Support
JSON data type support is now available in Microsoft.Data.SqlClient v6.0. This release introduces SqlJson
type available as an extension to System.Data.SqlDbTypes
:
using System;
using System.Data.SqlTypes;
using System.Text.Json;
namespace Microsoft.Data.SqlTypes
{
/// <summary>
/// Represents the JSON data type in SQL Server.
/// </summary>
public class SqlJson : INullable
{
/// <summary>
/// Parameterless constructor. Initializes a new instance of the SqlJson class which
/// represents a null JSON value.
/// </summary>
public SqlJson() { }
/// <summary>
/// Takes a <see cref="string"/> as input and initializes a new instance of the SqlJson class.
/// </summary>
/// <param name="jsonString"></param>
public SqlJson(string jsonString) { }
/// <summary>
/// Takes a <see cref="JsonDocument"/> as input and initializes a new instance of the SqlJson class.
/// </summary>
/// <param name="jsonDoc"></param>
public SqlJson(JsonDocument jsonDoc) { }
/// <inheritdoc/>
public bool IsNull => throw null;
/// <summary>
/// Represents a null instance of the <see cref="SqlJson"/> type.
/// </summary>
public static SqlJson Null { get { throw null; } }
/// <summary>
/// Gets the string representation of the Json content of this <see cref="SqlJson" /> instance.
/// </summary>
public string Value { get ; }
}
}
The JSON data type supports reading, writing, streaming, and performing bulk copy operations.
Introducing SqlClientDiagnostics
SqlClientDiagnostic
is now available as a strongly-typed collection of key-value pairs that can be captured by consuming applications.
// Class that provides strongly-typed collection of key-value pairs for SqlClient diagnostic objects.
public abstract class SqlClientDiagnostic : System.Collections.Generic.IReadOnlyList<System.Collections.Generic.KeyValuePair<string, object>>
{
// A guid value used to correlate before, after and error events.
public System.Guid OperationId;
// The name of the operation.
public string Operation;
// The timestamp of the event.
public long Timestamp;
// The number of elements in the collection.
public int Count;
// The element at the specified index in the read-only list.
public System.Collections.Generic.KeyValuePair<string, object> this[int index];
// An enumerator that can be used to iterate through the collection.
public System.Collections.Generic.IEnumerator<System.Collections.Generic.KeyValuePair<string, object>> GetEnumerator();
}
Added Support for Connection Overrides in OpenAsync()
API
The default behavior of SqlConnection.OpenAsync()
can be overridden to disable the ten-second delay and automatic connection retries triggered by transient errors.
using(SqlConnection sqlConnection = new SqlConnection("Data Source=(local);Integrated Security=true;Initial Catalog=AdventureWorks;"))
{
await sqlConnection.OpenAsync(SqlConnectionOverrides.OpenWithoutRetry, cancellationToken);
}
Other Additions
- Added support for .NET 9 #2946
- Added localization in Czech, Polish, and Turkish #2987
- Added
TokenCredential
object to take advantage of token caching inActiveDirectoryAuthenticationProvider
. #2380 - Added support for using
DateOnly
andTimeOnly
inDataTable
andSqlDataRecord
structured parameters. #2258 - Added scope trace for
GenerateSspiClientContext
. #2497, #2725 - Added readme to NuGet package #2826
- Enabled NuGet package auditing via NuGet.org audit source #3024
- Added missing SqlCommand_BeginExecuteReader code sample #3009
Fixed
- Fixed
Socket.Connect
timeout issue caused by thread starvation. #2777 - Fixed pending data with
SqlDataReader
against an encrypted column. #2618 - Fixed Entra authentication when using infinite connection timeout in
ActiveDirectoryAuthenticationProvider
. #2651 - Fixed
GetSchema
by excluding unsupported engines due to lack of support forASSEMBLYPROPERTY
function. #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
SqlConnection
to includeAccessTokenCallback
. #2525 - Fixed issue with
DateTimeOffset
in table-valued parameters, which was introduced in 5.2. #2453 - Fixed
ArgumentNullException
onSqlDataRecord.GetValue
when using user-defined data type on .NET. #2448 - Fixed
SqlBuffer
andSqlGuid
when it's null. #2310 - Fixed
SqlBulkCopy.WriteToServer
state in a consecutive calls. #2375 - Fixed null reference exception with
SqlConnection.FireInfoMessageEventOnUserErrors
after introducing the batch command. #2399 - 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 toLoginWithFailover
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
- 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 - Fixed reference assembly definitions for SqlClientDiagnostic APIs #3097
- Fixed issue with down-level SSL/TLS version warnings #3126
Changed
- Dependency changes
- Added dependency on
Microsoft.Bcl.Cryptography:9.0.0
#2946 - Added dependency on
System.Security.Cryptography.Pkcs:9.0.0
to address SYSLIB0057#2946 - Added dependency on
System.Text.Json
8.0.5
for .NET 8+ and6.0.10
for other versions #2921 - Removed dependency on
Microsoft.Extensions.Caching.Memory
andSystem.Security.Cryptography.Cng
, which were unnecessary after removing .NET Standard. #2577 - Removed dependency on
System.Text.Json
from .NET 8+ #2930
...
- Added dependency on
Preview Release 6.0.0-preview3.24332.3
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
Contributors
Thanks to the following public contributors. Their efforts toward this project are very much appreciated.
For detailed release notes, refer to 6.0.0-preview3.md
Preview Release v6.0.0-preview2.24304.8
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 native datatype currently in Public preview in SQL Server. #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
New Contributors
- @Markeli made their first contribution in #2797
- @EamonHetherton made their first contribution in #2411
For detailed release notes, refer to 6.0.0-preview2.md
Preview Release v6.0.0-preview1.24240.8
[Preview Release 6.0.0-preview1.24240.8] - 2024-08-27
This update brings the below changes over the 5.2 release:
Breaking Changes
Added
- Added
TokenCredential
object to take advantage of token caching inActiveDirectoryAuthenticationProvider
. #2380 - Added
DateOnly
andTimeOnly
support toDataTable
as a structured parameter. #2258 - Added
Microsoft.Data.SqlClient.Diagnostics.SqlClientDiagnostic
type in .NET. #2226 - Added scope trace for
GenerateSspiClientContext
. #2497, #2725
Fixed
- Fixed
Socket.Connect
timeout issue caused by thread starvation. #2777 - Fixed pending data with
SqlDataReader
against an encrypted column. #2618 - Fixed Entra authentication when using infinite connection timeout in
ActiveDirectoryAuthenticationProvider
. #2651 - Fixed
GetSchema
by excluding unsupported engines due to lack of support forASSEMBLYPROPERTY
function. #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
SqlConnection
to includeAccessTokenCallback
. #2525 - Fixed issue with
DateTimeOffset
in table-valued parameters, which was introduced in 5.2. #2453 - Fixed
ArgumentNullException
onSqlDataRecord.GetValue
when using user-defined data type on .NET. #2448 - Fixed
SqlBuffer
andSqlGuild
when it's null. #2310 - Fixed
SqlBulkCopy.WriteToServer
state in a consecutive calls. #2375 - Fixed null reference exception with
SqlConnection.FireInfoMessageEventOnUserErrors
after introducing the batch command. #2399
Changed
- Updated Microsoft.Data.SqlClient.SNI version to
6.0.0-preview1.24226.4
. #2772 - Improved access to
SqlAuthenticationProviderManager.Instance
and avoid early object initiation. #2636 - Removed undocumented properties of
Azure.Identity
inActiveDirectoryAuthenticationProvider
. #2562 - Replaced
System.Runtime.Caching
withMicrosoft.Extensions.Caching.Memory
. #2493 - Updated
EnableOptimizedParameterBinding
to only accept text mode commands. #2417 - Updated
Azure.Identity
version from1.10.3
to1.11.4
. #2577 - Updated
Azure.Core
version from1.35.0
to1.38.0
. #2462 - Updated
Azure.Security.KeyVault.Keys
version from4.4.0
to4.5.0
. #2462 - Updated
Microsoft.IdentityModel.JsonWebTokens
andMicrosoft.IdentityModel.Protocols.OpenIdConnect
from6.35.0
to7.5.0
. #2429 - Removed direct dependency to
Microsoft.Identity.Client
to take the transient dependecy throughAzure.Identity
. #2577 - Removed unnecessary references
Microsoft.Extensions.Caching.Memory
andSystem.Security.Cryptography.Cng
after removing .NET Standard. #2577 - Improved memory allocation when reader opened by
CommandBehavior.SequentialAccess
over 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
For detailed release notes, refer to 6.0.0-preview1.md
Stable release v5.1.6
[Stable release 5.1.6] - 2024-08-27
Fixed
- Fixed Transient fault handling issue with
OpenAsync
. #1983 #2508 - Fixed
AcquireTokenAsync
timeout handling for edge cases inActiveDirectoryAuthenticationProvider
. #2706 - Fixed pending data with
SqlDataReader
against an encrypted column. #2618 #2818
Changed
- Upgraded
Azure.Identity
version from 1.11.3 to 1.11.4 [#2649] (#2649) [#2529] (#2529) to address CVE-2024-35255. - Upgraded
Microsoft.Identity.Client
version from 4.60.0 to 4.61.3 [#2649] (#2649) [#2529] (#2529) to address CVE-2024-35255. - Added caching to
TokenCredential
objects to take advantage of token caching. #2776 - Code health improvements: [#2490] (#2490)
Stable release v5.2.2
[Stable release 5.2.2] - 2024-08-27
Fixed
- Fixed
AcquireTokenAsync
timeout handling for edge cases inActiveDirectoryAuthenticationProvider
. #2650 - Fixed issue with
Socket.Connect
in managed SNI. #2779 - Fixed path for
AssemblyAttributes
in 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
ArgumentNullException
onSqlDataRecord.GetValue
when using user-defined data type on .NET. #2816 - Fixed pending data with
SqlDataReader
against an encrypted column. #2817
Changed
- Upgraded
Azure.Identity
version from 1.11.3 to 1.11.4 #2648 to address CVE-2024-35255. - Upgraded
Microsoft.Identity.Client
version from 4.60.0 to 4.61.3 #2648 to address CVE-2024-35255. - Added caching to
TokenCredential
objects to take advantage of token caching. #2775