This release is about making everyday database workloads more predictable. It fixes a collection of issues that could appear under connection failures, retries, transactions, pooling, streaming, encryption, and newer SQL Server data types.
If your application uses Microsoft.Data.SqlClient, upgrading to 7.1.0 gives you a provider with fewer sharp edges in the paths your application already depends on.
Connections and transactions behave more reliably
Connection pooling is one of those features that should disappear into the background. Your application opens a connection, does its work, returns the connection, and moves on.
SqlClient 7.1.0 fixes several cases where that process could go wrong:
- A connection could return to the pool in a broken state after a TransactionScope rollback.
- Pool performance counters could become negative or drift upward after failed or broken connections.
- A connection factory timer could keep waking the process even when there were no pools to maintain.
- A race during connection opening could produce an InvalidCastException.
- Failover login paths could encounter invalid parser state.
- Several cancellation token sources could remain allocated longer than necessary.
These fixes matter most in long-running services, applications that reconnect frequently, and workloads that depend heavily on pooling and transactions.
Better behavior for modern SQL Server data
SqlClient 7.1.0 also fixes issues that affect newer .NET and SQL Server scenarios.
Applications using DateOnly with variants or table-valued parameters now send the correct SQL type. This avoids converting valid date values into datetime and prevents failures for dates outside the datetime range.
Large decimal parameters with explicit precision and scale no longer cause an OverflowException. This is especially important for Always Encrypted applications, where precision and scale are commonly specified explicitly.
Azure SQL applications using schema discovery can now see the json data type through:
connection.GetSchema(“DataTypes”);
The release also corrects Always Encrypted metadata reads and fixes a SqlDataReader streaming issue where calling IsDBNull() before reading a streamed value could skip data.
Easier diagnosis for libraries and tools
SqlClient 7.1.0 adds an application identity to the TDS USERAGENT payload.
Most application developers do not need to configure this. The feature is intended for libraries and tools built on top of SqlClient. For example, Entity Framework Core, SQL Server Management Studio, SqlPackage, and other tools can identify themselves to SQL Server.
That gives database and service operators a clearer picture when investigating a workload. Instead of seeing only that many connections came from SqlClient, telemetry can show which client stack created them.
A library or tool can register its identity before opening a connection:
using Microsoft.Data.SqlClient;
await using var connection = new SqlConnection(connectionString);
connection.RegisteredApplication =
RegisteredApplication.EntityFrameworkCore;
await connection.OpenAsync();
This value is telemetry only. It must not be used for authorization or other security decisions.
Moving away from Transparent Network IP Resolution
TransparentNetworkIPResolution is now marked obsolete.
There is no runtime behavior change in 7.1.0. Applications that use the property will receive a compile-time warning and can migrate when convenient. For new code, use MultiSubnetFailover, which works across supported target frameworks and is the recommended approach for availability group listeners.
Upgrade to 7.1.0
Install the provider with NuGet:
dotnet add package Microsoft.Data.SqlClient –version 7.1.0
The SqlClient extension packages continue to use aligned versions. If your application references them, update them to 7.1.0 too:
- Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider
- Microsoft.Data.SqlClient.Extensions.Azure
- Microsoft.Data.SqlClient.Extensions.Abstractions
- Microsoft.Data.SqlClient.Internal.Logging
Applications upgrading from 7.0.2, 7.0.3, or a 7.1 preview do not need new .NET Framework strong-name binding redirects.
Read the complete 7.1.0 release notes and get the package from NuGet.


