Release Notes
Stable Release 6.1.0 - 2025-07-25
This update brings the following changes since the
6.0.2 stable 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.
- The MDS .NET Standard 2.0 target framework support does not include an
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.
Other Additions
- 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) - 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 toSqlJson
.
(#3427) - 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 (since 6.1.0-preview2)
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
Size
property 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.
Other Changes
- 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) - 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) - Added dependency on
System.Text.Json
8.0.5 (.NET 8.0) and
9.0.5 (.NET Standard 2.0, .NET 9.0)
to avoid transitive vulnerabilities (CVE-2024-43485).
(#3403) - 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.
(Many PRs - see 6.1.0-preview1 and 6.1.0-preview2 for details.) - Test improvements include a new unit test project, updates to test
dependencies, removal of hardcoded credentials, and improved robustness.
(Many PRs - see 6.1.0-preview1 and 6.1.0-preview2 for details.)
Contributors
We thank the following public contributors. Their efforts toward this project
are very much appreciated.
New Contributors
- BradBarnich made their first contribution in
#3325 - deusanyjunior made their first contribution in
#3310 - emmanuel-ferdman made their first contribution in
#3041 - JNjenga made their first contribution in
#3183 - MaceWindu made their first contribution in
#3134 - Midhunnnk made their first contribution in
#3250
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
- System.Configuration.ConfigurationManager 9.0.4
- System.Security.Cryptography.Pkcs 9.0.4
- System.Text.Json 9.0.5