Skip to content

Releases: dotnet/SqlClient

Preview Release 6.1.0-preview2

27 Jun 23:15
df35633
Compare
Choose a tag to compare
Pre-release

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] (#3115).

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 SqlCachedBuffer async read edge case. (#3329)
  • Fixed SqlSequentialTextReader edge case with single-byte reads. (#3383)
  • Fixed an incorrect error message when parsing connection string PoolBlockingPeriod. (#3411)
  • Added missing ToString() override to SqlJson. (#3427)

Changed

Contributors

We thank the following public contributors. Their efforts toward this project
are very much appreciated.

New Contributors

Target Platform Support

  • .NET Framework 4.6.2+ (Windows ARM64, Windows x86, Windows x64)
  • .NET 8.0+ (Windows x86, Windows x64, Windows ARM64, Windows ARM, Linux, macOS)

Dependencies

.NET Standard 2.0

  • Azure.Identity 1.13.2
  • Microsoft.Bcl.Cryptography 9.0.4
  • Microsoft.Data.SqlClient.SNI.runtime 6.0.2
  • Microsoft.Extensions.Caching.Memory 9.0.4
  • Microsoft.IdentityModel.JsonWebTokens 7.7.1
  • Microsoft.IdentityModel.Protocols.OpenIdConnect 7.7.1
  • Microsoft.SqlServer.Server 1.0.0
  • System.Configuration.ConfigurationManager 9.0.4
  • System.Security.Cryptography.Pkcs 9.0.4
  • System.Text.Json 9.0.5

.NET Framework 4.6.2+

  • Azure.Identity 1.13.2
  • Microsoft.Bcl.Cryptography 8.0.0
  • Microsoft.Data.SqlClient.SNI 6.0.2
  • Microsoft.Extensions.Caching.Memory 8.0.1
  • Microsoft.IdentityModel.JsonWebTokens 7.7.1
  • Microsoft.IdentityModel.Protocols.OpenIdConnect 7.7.1
  • System.Buffers 4.5.1
  • System.Data.Common 4.3.0
  • System.Security.Cryptography.Pkcs 8.0.1
  • System.Text.Encodings.Web 8.0.0
  • System.Text.Json 8.0.5

.NET 8.0

  • Azure.Identity 1.13.2
  • Microsoft.Bcl.Cryptography 8.0.0
  • Microsoft.Data.SqlClient.SNI.runtime 6.0.2
  • Microsoft.Extensions.Caching.Memory 8.0.1
  • Microsoft.IdentityModel.JsonWebTokens 7.7.1
  • Microsoft.IdentityModel.Protocols.OpenIdConnect 7.7.1
  • Microsoft.SqlServer.Server 1.0.0
  • System.Configuration.ConfigurationManager 8.0.1
  • System.Security.Cryptography.Pkcs 8.0.1
  • System.Text.Json 8.0.5

.NET 9.0

  • Azure.Identity 1.13.2
  • Microsoft.Bcl.Cryptography 9.0.4
  • Microsoft.Data.SqlClient.SNI.runtime 6.0.2
  • Microsoft.Extensions.Caching.Memory 9.0.4
  • Microsoft.IdentityModel.JsonWebTokens 7.7.1
  • Microsoft.IdentityModel.Protocols.OpenIdConnect 7.7.1
  • Microsoft.SqlServer.Server 1.0.0
    ...
Read more

Preview Release v6.1.0-preview1

30 Apr 23:07
08622e7
Compare
Choose a tag to compare
Pre-release

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

New Contributors

Stable release v5.2.3

29 Apr 19:38
1c0b2f6
Compare
Choose a tag to compare

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

Stable Release v5.1.7

25 Apr 22:10
0697f41
Compare
Choose a tag to compare

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

Stable Release v6.0.2

25 Apr 21:54
b16dec0
Compare
Choose a tag to compare

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

Stable Release v6.0.1

29 Jan 21:17
cfb007d
Compare
Choose a tag to compare

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 in ActiveDirectoryAuthenticationProvider. #2380
  • Added support for using DateOnly and TimeOnly in DataTable and SqlDataRecord 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 for ASSEMBLYPROPERTY 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 include AccessTokenCallback. #2525
  • Fixed issue with DateTimeOffset in table-valued parameters, which was introduced in 5.2. #2453
  • Fixed ArgumentNullException on SqlDataRecord.GetValue when using user-defined data type on .NET. #2448
  • Fixed SqlBuffer and SqlGuid 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 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
  • 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+ and 6.0.10 for other versions #2921
    • Removed dependency on Microsoft.Extensions.Caching.Memory and System.Security.Cryptography.Cng, which were unnecessary after removing .NET Standard. #2577
    • Removed dependency on System.Text.Json from .NET 8+ #2930
      ...
Read more

Preview Release 6.0.0-preview3.24332.3

28 Nov 01:20
c0bc846
Compare
Choose a tag to compare
Pre-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

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

30 Oct 20:17
Compare
Choose a tag to compare
Pre-release

Added

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

New Contributors

For detailed release notes, refer to 6.0.0-preview2.md

Preview Release v6.0.0-preview1.24240.8

28 Aug 17:51
9573da2
Compare
Choose a tag to compare
Pre-release

[Preview Release 6.0.0-preview1.24240.8] - 2024-08-27

This update brings the below changes over the 5.2 release:

Breaking Changes

  • Removed support for .NET Standard. #2386
  • Removed UWP (uap) references. #2483

Added

  • Added TokenCredential object to take advantage of token caching in ActiveDirectoryAuthenticationProvider. #2380
  • Added DateOnly and TimeOnly support to DataTable 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 for ASSEMBLYPROPERTY 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 include AccessTokenCallback. #2525
  • Fixed issue with DateTimeOffset in table-valued parameters, which was introduced in 5.2. #2453
  • Fixed ArgumentNullException on SqlDataRecord.GetValue when using user-defined data type on .NET. #2448
  • Fixed SqlBuffer and SqlGuild 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 in ActiveDirectoryAuthenticationProvider. #2562
  • Replaced System.Runtime.Caching with Microsoft.Extensions.Caching.Memory. #2493
  • Updated EnableOptimizedParameterBinding to only accept text mode commands. #2417
  • Updated Azure.Identity version from 1.10.3 to 1.11.4. #2577
  • Updated Azure.Core version from 1.35.0 to 1.38.0. #2462
  • Updated Azure.Security.KeyVault.Keys version from 4.4.0 to 4.5.0. #2462
  • Updated Microsoft.IdentityModel.JsonWebTokens and Microsoft.IdentityModel.Protocols.OpenIdConnect from 6.35.0 to 7.5.0. #2429
  • Removed direct dependency to Microsoft.Identity.Client to take the transient dependecy through Azure.Identity. #2577
  • Removed unnecessary references Microsoft.Extensions.Caching.Memory and System.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

28 Aug 16:37
cec5dd8
Compare
Choose a tag to compare

[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 in ActiveDirectoryAuthenticationProvider. #2706
  • Fixed pending data with SqlDataReader against an encrypted column. #2618 #2818

Changed

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy