# Release Notes ## Stable Release 6.1.7 - 2026-09-10 This update brings the following changes since the [6.1.6](6.1.6.md) release: ### Changed - Updated the `Microsoft.Data.SqlClient.SNI` and `Microsoft.Data.SqlClient.SNI.runtime` dependencies to 6.0.3 (was 6.0.2). ([#4598](https://github.com/dotnet/SqlClient/pull/4598)) ### Fixed - Fixed `ServerCertificate` validation on the managed SNI path so the configured certificate is compared against the server certificate even when the server certificate passes chain and host-name validation. When certificate validation is enabled, a missing, unreadable, or invalid certificate file, a certificate mismatch, or a missing server certificate now causes the TLS handshake to fail instead of bypassing the configured certificate check. (net8.0/net9.0 only) ([#4445](https://github.com/dotnet/SqlClient/pull/4445), [#4584](https://github.com/dotnet/SqlClient/pull/4584)) - Fixed Always Encrypted VSM/HGS enclave attestation to verify that the enclave public key used to establish a session matches the key committed to by the signed attestation report. Missing, malformed, or mismatched key-binding data now causes attestation to fail before the session secret is derived. ([#4532](https://github.com/dotnet/SqlClient/pull/4532), [#4552](https://github.com/dotnet/SqlClient/pull/4552)) - Fixed `SqlConnection.AccessTokenCallback` not disabling Transparent Network IP Resolution by default, making it consistent with `SqlConnection.AccessToken`. An explicitly configured `TransparentNetworkIPResolution` connection-string value still takes precedence. (net462 only) ([#4520](https://github.com/dotnet/SqlClient/pull/4520), [#4560](https://github.com/dotnet/SqlClient/pull/4560)) - Fixed token authentication state handling so clearing `SqlConnection.AccessToken` preserves an existing `AccessTokenCallback` in the connection pool key, and clearing `AccessTokenCallback` preserves an existing `AccessToken`. Callback-based authentication now also follows the same prelogin server-certificate validation rules as an explicitly supplied access token. ([#4520](https://github.com/dotnet/SqlClient/pull/4520), [#4560](https://github.com/dotnet/SqlClient/pull/4560)) - Fixed configurable retry logic installing a permanent, process-wide assembly-resolution handler that could interfere with unrelated assembly loading. The handler is now active only while an explicitly configured custom retry provider is resolved and constructed, and probes `AppContext.BaseDirectory` instead of the current working directory. Place custom retry assemblies in the application base directory; dependencies loaded after provider construction must be resolvable through normal application dependency resolution or an application-provided handler. (net8.0/net9.0 only) ([#2214](https://github.com/dotnet/SqlClient/issues/2214), [#4547](https://github.com/dotnet/SqlClient/pull/4547), [#4664](https://github.com/dotnet/SqlClient/pull/4664)) ## Target Platform Support - .NET Framework 4.6.2+ (Windows x86, Windows x64, Windows ARM64) - .NET 8.0+ (Windows x86, Windows x64, Windows ARM64, Linux, macOS) - .NET Standard 2.0+ (Windows x86, Windows x64, Windows ARM64, Linux, macOS) ### Dependencies #### .NET Framework 4.6.2 - Azure.Core 1.50.0 - Azure.Identity 1.17.1 - Microsoft.Data.SqlClient.SNI 6.0.3 - Microsoft.Extensions.Caching.Memory 8.0.1 - Microsoft.Identity.Client 4.84.2 - Microsoft.Identity.Client.Broker 4.84.2 - Microsoft.IdentityModel.JsonWebTokens 7.7.1 - Microsoft.IdentityModel.Protocols.OpenIdConnect 7.7.1 - System.Buffers 4.6.1 - System.Data.Common 4.3.0 - System.Diagnostics.DiagnosticSource 8.0.1 - System.IdentityModel.Tokens.Jwt 7.7.1 - System.Memory 4.6.3 - System.Security.Cryptography.Pkcs 8.0.1 - System.Text.Json 8.0.6 - System.Text.RegularExpressions 4.3.1 #### .NET 8.0 - Azure.Core 1.50.0 - Azure.Identity 1.17.1 - Microsoft.Data.SqlClient.SNI.runtime 6.0.3 - Microsoft.Extensions.Caching.Memory 8.0.1 - Microsoft.Identity.Client 4.84.2 - Microsoft.Identity.Client.Broker 4.84.2 - 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.Diagnostics.DiagnosticSource 8.0.1 - System.IdentityModel.Tokens.Jwt 7.7.1 - System.Security.Cryptography.Pkcs 8.0.1 #### .NET 9.0 - Azure.Core 1.50.0 - Azure.Identity 1.17.1 - Microsoft.Data.SqlClient.SNI.runtime 6.0.3 - Microsoft.Extensions.Caching.Memory 9.0.11 - Microsoft.Identity.Client 4.84.2 - Microsoft.Identity.Client.Broker 4.84.2 - Microsoft.IdentityModel.JsonWebTokens 7.7.1 - Microsoft.IdentityModel.Protocols.OpenIdConnect 7.7.1 - Microsoft.SqlServer.Server 1.0.0 - System.Configuration.ConfigurationManager 9.0.11 - System.Diagnostics.DiagnosticSource 9.0.11 - System.IdentityModel.Tokens.Jwt 7.7.1 - System.Security.Cryptography.Pkcs 9.0.11 #### .NET Standard 2.0 - Azure.Core 1.50.0 - Azure.Identity 1.17.1 - Microsoft.Data.SqlClient.SNI.runtime 6.0.3 - Microsoft.Extensions.Caching.Memory 8.0.1 - Microsoft.Identity.Client 4.84.2 - Microsoft.Identity.Client.Broker 4.84.2 - 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.Diagnostics.DiagnosticSource 8.0.1 - System.IdentityModel.Tokens.Jwt 7.7.1 - System.Security.Cryptography.Pkcs 8.0.1 - System.Text.Json 8.0.6