|
| 1 | +# Release Notes |
| 2 | + |
| 3 | +## Stable Release 6.1.0 - 2025-07-25 |
| 4 | + |
| 5 | +This update brings the following changes since the |
| 6 | +[6.0.2](../6.0/6.0.2.md) stable release: |
| 7 | + |
| 8 | +### Added |
| 9 | + |
| 10 | +#### Added dedicated SQL Server vector datatype support |
| 11 | + |
| 12 | +*What Changed:* |
| 13 | + |
| 14 | +- Optimized vector communications between MDS and SQL Server 2025, employing a |
| 15 | + custom binary format over the TDS protocol. |
| 16 | + ([#3433](https://github.com/dotnet/SqlClient/pull/3433), |
| 17 | + [#3443](https://github.com/dotnet/SqlClient/pull/3443)) |
| 18 | +- Reduced processing load compared to existing JSON-based vector support. |
| 19 | +- Initial support for 32-bit single-precision floating point vectors. |
| 20 | + |
| 21 | +*Who Benefits:* |
| 22 | + |
| 23 | +- Applications moving large vector data sets will see beneficial improvements |
| 24 | + to processing times and memory requirements. |
| 25 | +- Vector-specific APIs are ready to support future numeric representations with |
| 26 | + a consistent look-and-feel. |
| 27 | + |
| 28 | +*Impact:* |
| 29 | + |
| 30 | +- Reduced transmission and processing times for vector operations versus JSON |
| 31 | + using SQL Server 2025 preview: |
| 32 | + - Reads: 50x improvement |
| 33 | + - Writes: 3.3x improvement |
| 34 | + - Bulk Copy: 19x improvement |
| 35 | + - (Observed with vector column of max 1998 size, and 10,000 records for each |
| 36 | + operation.) |
| 37 | +- Improved memory footprint due to the elimination of JSON |
| 38 | + serialization/deserialization and string representation bloat. |
| 39 | +- For backwards compatibility with earlier SQL Server Vector implementations, |
| 40 | + applications may continue to use JSON strings to send/receive vector data, |
| 41 | + although they will not see any of the performance improvements noted above. |
| 42 | + |
| 43 | +#### Revived .NET Standard 2.0 target support |
| 44 | + |
| 45 | +*What Changed:* |
| 46 | + |
| 47 | +- Support for targeting .NET Standard 2.0 has returned. |
| 48 | + ([#3381](https://github.com/dotnet/SqlClient/pull/3381)) |
| 49 | +- Support had previously been removed in the 6.0 release, with the |
| 50 | + [community voicing concerns](https://github.com/dotnet/SqlClient/discussions/3115). |
| 51 | + |
| 52 | +*Who Benefits:* |
| 53 | + |
| 54 | +- Libraries that depend on MDS may seamlessly target any of the following |
| 55 | + frameworks: |
| 56 | + - .NET Standard 2.0 |
| 57 | + - .NET Framework 4.6.2 and above |
| 58 | + - .NET 8.0 |
| 59 | + - .NET 9.0 |
| 60 | +- Applications should continue to target runtimes. |
| 61 | + - The MDS .NET Standard 2.0 target framework support does not include an |
| 62 | + actual implementation, and cannot be used with a runtime. |
| 63 | + - An application's build/publish process should always pick the appropriate |
| 64 | + MDS .NET/.NET Framework runtime implementation. |
| 65 | + - Custom build/publish actions that incorrectly try to deploy the MDS .NET |
| 66 | + Standard 2.0 reference DLL at runtime are not supported. |
| 67 | + |
| 68 | +*Impact:* |
| 69 | + |
| 70 | +- Libraries targeting .NET Standard 2.0 will no longer receive warnings like |
| 71 | + this: |
| 72 | + - `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.` |
| 73 | + |
| 74 | +#### Other Additions |
| 75 | + |
| 76 | +- Added packet multiplexing support to improve large data read performance. |
| 77 | + ([#2714](https://github.com/dotnet/SqlClient/pull/2714), |
| 78 | + [#3161](https://github.com/dotnet/SqlClient/pull/3161), |
| 79 | + [#3202](https://github.com/dotnet/SqlClient/pull/3202)) |
| 80 | +- Added support for special casing with Fabric endpoints. |
| 81 | + ([#3084](https://github.com/dotnet/SqlClient/pull/3084)) |
| 82 | + |
| 83 | +### Fixed |
| 84 | + |
| 85 | +- Fixed distributed transactions to be preserved during pooled connection resets. |
| 86 | + ([#3019](https://github.com/dotnet/SqlClient/pull/3019)) |
| 87 | +- Fixed application crash when the `Data Source` parameter begins with a comma. |
| 88 | + ([#3250](https://github.com/dotnet/SqlClient/pull/3250)) |
| 89 | +- Resolved synonym count discrepancies in debug mode. |
| 90 | + ([#3098](https://github.com/dotnet/SqlClient/pull/3098)) |
| 91 | +- Addressed warnings for down-level SSL/TLS versions. |
| 92 | + ([#3126](https://github.com/dotnet/SqlClient/pull/3126)) |
| 93 | +- Fixed missing <NeutralLanguage> property. |
| 94 | + ([#3325](https://github.com/dotnet/SqlClient/pull/3325)) |
| 95 | +- Fixed injection of UTF-8 BOM during bulk copy. |
| 96 | + ([#3399](https://github.com/dotnet/SqlClient/pull/3399)) |
| 97 | +- Fixed `SqlCachedBuffer` async read edge case. |
| 98 | + ([#3329](https://github.com/dotnet/SqlClient/pull/3329)) |
| 99 | +- Fixed `SqlSequentialTextReader` edge case with single-byte reads. |
| 100 | + ([#3383](https://github.com/dotnet/SqlClient/pull/3383)) |
| 101 | +- Fixed an incorrect error message when parsing connection string `PoolBlockingPeriod`. |
| 102 | + ([#3411](https://github.com/dotnet/SqlClient/pull/3411)) |
| 103 | +- Added missing `ToString()` override to `SqlJson`. |
| 104 | + ([#3427](https://github.com/dotnet/SqlClient/pull/3427)) |
| 105 | +- Fixed missing socket error codes on non-Windows platforms. |
| 106 | + ([#3475](https://github.com/dotnet/SqlClient/pull/3475)) |
| 107 | +- Fixed primary/secondary server SPN handling during SSPI negotiation. |
| 108 | + ([#3478](https://github.com/dotnet/SqlClient/pull/3478)) |
| 109 | +- Fixed AzureKeyVaultProvider package key caching to serialize Azure key fetch |
| 110 | + operations. |
| 111 | + ([#3477](https://github.com/dotnet/SqlClient/pull/3477)) |
| 112 | +- Fixed a rare error related to multi-packet async text reads. |
| 113 | + ([#3474](https://github.com/dotnet/SqlClient/pull/3474)) |
| 114 | +- Fixed some spelling errors in the API docs. |
| 115 | + ([#3500](https://github.com/dotnet/SqlClient/pull/3500)) |
| 116 | +- Fixed a rare multi-packet string corruption bug. |
| 117 | + ([#3513](https://github.com/dotnet/SqlClient/pull/3513)) |
| 118 | + |
| 119 | +### Changed |
| 120 | + |
| 121 | +#### SqlDecimal type workarounds conversions |
| 122 | + |
| 123 | +*What Changed:* |
| 124 | + |
| 125 | +- Changed how SqlDecimal type workarounds perform conversions to meet |
| 126 | + compliance policies. |
| 127 | + ([#3467](https://github.com/dotnet/SqlClient/pull/3467)) |
| 128 | + |
| 129 | +*Who Benefits:* |
| 130 | + |
| 131 | +- Microsoft products must not use undocumented APIs on other Microsoft products. |
| 132 | + This change removes calls to undocumented APIs and replaces them with |
| 133 | + compliant API use. |
| 134 | + |
| 135 | +*Impact:* |
| 136 | + |
| 137 | +- These changes impose an observed 5% decrease in performance on .NET Framework. |
| 138 | + |
| 139 | +#### SqlVector API improvements (since [6.1.0-preview2](6.1.0-preview2.md)) |
| 140 | + |
| 141 | +*What Changed:* |
| 142 | + |
| 143 | +- Several changes were made to the SqlVector API published in the |
| 144 | + [6.1.0-preview2](6.1.0-preview2.md) release |
| 145 | + ([#3472](https://github.com/dotnet/SqlClient/pull/3472)): |
| 146 | + - The SqlVector class was changed to a readonly struct. |
| 147 | + - The null value constructor was changed to a static `CreateNull()` method. |
| 148 | + - The `Size` property was removed. |
| 149 | + |
| 150 | +*Who Benefits:* |
| 151 | + |
| 152 | +- SqlVector instances gain the efficiencies of struct handling. |
| 153 | + |
| 154 | +*Impact:* |
| 155 | + |
| 156 | +- Early-adopter applications may require updates if they rely on the old APIs |
| 157 | + and any class-specific behaviour. |
| 158 | + |
| 159 | +#### Other Changes |
| 160 | + |
| 161 | +- Reduced allocations when opening a connection. |
| 162 | + ([#3364](https://github.com/dotnet/SqlClient/pull/3364)) |
| 163 | +- Various performance improvements related to TDS parsing. |
| 164 | + ([#3337](https://github.com/dotnet/SqlClient/pull/3337), |
| 165 | + [#3377](https://github.com/dotnet/SqlClient/pull/3377), |
| 166 | + [#3422](https://github.com/dotnet/SqlClient/pull/3422)) |
| 167 | +- Improved native AOT support. |
| 168 | + ([#3364](https://github.com/dotnet/SqlClient/pull/3364), |
| 169 | + [#3369](https://github.com/dotnet/SqlClient/pull/3369), |
| 170 | + [#3401](https://github.com/dotnet/SqlClient/pull/3401)) |
| 171 | +- Progress towards [SSPI extensibility](https://github.com/dotnet/SqlClient/issues/2253). |
| 172 | + ([#2454](https://github.com/dotnet/SqlClient/pull/2454)) |
| 173 | +- Progress towards [connection pooling improvements](https://github.com/dotnet/SqlClient/issues/3356). |
| 174 | + ([#3352](https://github.com/dotnet/SqlClient/pull/3352), |
| 175 | + [#3396](https://github.com/dotnet/SqlClient/pull/3396)) |
| 176 | +- Expanded/clarified SqlConnection's |
| 177 | + [AccessToken](https://learn.microsoft.com/en-us/dotnet/api/microsoft.data.sqlclient.sqlconnection.accesstoken) and |
| 178 | + [AccessTokenCallback](https://learn.microsoft.com/en-us/dotnet/api/microsoft.data.sqlclient.sqlconnection.accesstokencallback) |
| 179 | + documentation. |
| 180 | + ([#3339](https://github.com/dotnet/SqlClient/pull/3339)) |
| 181 | +- Fixed some poorly formatted tables in the API docs. |
| 182 | + ([#3391](https://github.com/dotnet/SqlClient/pull/3391)) |
| 183 | +- Optimized binary size for AOT. |
| 184 | + ([#3091](https://github.com/dotnet/SqlClient/pull/3091)) |
| 185 | +- Refined bulk copy operations to handle unmatched column names more effectively. |
| 186 | + ([#3205](https://github.com/dotnet/SqlClient/pull/3205)) |
| 187 | +- Enhanced `SqlBulkCopy` to explicitly identify mismatched column names. |
| 188 | + ([#3183](https://github.com/dotnet/SqlClient/pull/3183)) |
| 189 | +- Optimized outgoing SSPI blob handling using `IBufferWriter<byte>`. |
| 190 | + ([#2452](https://github.com/dotnet/SqlClient/pull/2452)) |
| 191 | +- Replaced `byte[]` with `string` for SNI to improve efficiency. |
| 192 | + ([#2790](https://github.com/dotnet/SqlClient/pull/2790)) |
| 193 | +- Code cleanup to remove SQL 2000 support. |
| 194 | + ([#2839](https://github.com/dotnet/SqlClient/pull/2839), |
| 195 | + [#3206](https://github.com/dotnet/SqlClient/pull/3206), |
| 196 | + [#3217](https://github.com/dotnet/SqlClient/pull/3217)) |
| 197 | +- Connection pool design refactor for a modular connection pool design. |
| 198 | + ([#3199](https://github.com/dotnet/SqlClient/pull/3199)) |
| 199 | +- Added dependency on `System.Text.Json` |
| 200 | + [8.0.5](https://www.nuget.org/packages/System.Text.Json/8.0.5) (.NET 8.0) and |
| 201 | + [9.0.5](https://www.nuget.org/packages/System.Text.Json/9.0.5) (.NET Standard 2.0, .NET 9.0) |
| 202 | + to avoid transitive vulnerabilities ([CVE-2024-43485](https://github.com/advisories/GHSA-8g4q-xg66-9fp4)). |
| 203 | + ([#3403](https://github.com/dotnet/SqlClient/pull/3403)) |
| 204 | +- Updated various dependencies [#3229](https://github.com/dotnet/SqlClient/pull/3229), primarily: |
| 205 | + - System.Text.Encodings.Web to v8.0.0 |
| 206 | + - System.Text.Json to v8.0.5 |
| 207 | + - Azure.Identity to v1.13.2 |
| 208 | + - Microsoft.Identity.Model.Json.Web.Tokens to v7.7.1 |
| 209 | + - Microsoft.Identity.Model.Protocols.OpenIdConnect to v7.7.1 |
| 210 | +- Code merge towards a unified SqlClient project, aligning .NET Framework and .NET Core implementations. |
| 211 | + (Many PRs - see [6.1.0-preview1](6.1.0-preview1.md) and [6.1.0-preview2](6.1.0-preview2.md) for details.) |
| 212 | +- Test improvements include a new unit test project, updates to test |
| 213 | + dependencies, removal of hardcoded credentials, and improved robustness. |
| 214 | + (Many PRs - see [6.1.0-preview1](6.1.0-preview1.md) and [6.1.0-preview2](6.1.0-preview2.md) for details.) |
| 215 | + |
| 216 | +## Contributors |
| 217 | + |
| 218 | +We thank the following public contributors. Their efforts toward this project |
| 219 | +are very much appreciated. |
| 220 | + |
| 221 | +- [edwardneal](https://github.com/edwardneal) |
| 222 | +- [ErikEJ](https://github.com/ErikEJ) |
| 223 | +- [MichelZ](https://github.com/MichelZ) |
| 224 | +- [twsouthwick](https://github.com/twsouthwick) |
| 225 | +- [Wraith2](https://github.com/Wraith2) |
| 226 | + |
| 227 | +### New Contributors |
| 228 | + |
| 229 | +- [BradBarnich](https://github.com/BradBarnich) made their first contribution in |
| 230 | + [#3325](https://github.com/dotnet/SqlClient/pull/3325) |
| 231 | +- [deusanyjunior](https://github.com/deusanyjunior) made their first contribution in |
| 232 | + [#3310](https://github.com/dotnet/SqlClient/pull/3310) |
| 233 | +- [emmanuel-ferdman](https://github.com/emmanuel-ferdman) made their first contribution in |
| 234 | + [#3041](https://github.com/dotnet/SqlClient/pull/3041) |
| 235 | +- [JNjenga](https://github.com/JNjenga) made their first contribution in |
| 236 | + [#3183](https://github.com/dotnet/SqlClient/pull/3183) |
| 237 | +- [MaceWindu](https://github.com/MaceWindu) made their first contribution in |
| 238 | + [#3134](https://github.com/dotnet/SqlClient/pull/3134) |
| 239 | +- [Midhunnnk](https://github.com/Midhunnnk) made their first contribution in |
| 240 | + [#3250](https://github.com/dotnet/SqlClient/pull/3250) |
| 241 | + |
| 242 | +## Target Platform Support |
| 243 | + |
| 244 | +- .NET Framework 4.6.2+ (Windows ARM64, Windows x86, Windows x64) |
| 245 | +- .NET 8.0+ (Windows x86, Windows x64, Windows ARM64, Windows ARM, Linux, macOS) |
| 246 | + |
| 247 | +### Dependencies |
| 248 | + |
| 249 | +#### .NET Standard 2.0 |
| 250 | + |
| 251 | +- Azure.Identity 1.13.2 |
| 252 | +- Microsoft.Bcl.Cryptography 9.0.4 |
| 253 | +- Microsoft.Data.SqlClient.SNI.runtime 6.0.2 |
| 254 | +- Microsoft.Extensions.Caching.Memory 9.0.4 |
| 255 | +- Microsoft.IdentityModel.JsonWebTokens 7.7.1 |
| 256 | +- Microsoft.IdentityModel.Protocols.OpenIdConnect 7.7.1 |
| 257 | +- Microsoft.SqlServer.Server 1.0.0 |
| 258 | +- System.Configuration.ConfigurationManager 9.0.4 |
| 259 | +- System.Security.Cryptography.Pkcs 9.0.4 |
| 260 | +- System.Text.Json 9.0.5 |
| 261 | + |
| 262 | +#### .NET Framework 4.6.2+ |
| 263 | + |
| 264 | +- Azure.Identity 1.13.2 |
| 265 | +- Microsoft.Bcl.Cryptography 8.0.0 |
| 266 | +- Microsoft.Data.SqlClient.SNI 6.0.2 |
| 267 | +- Microsoft.Extensions.Caching.Memory 8.0.1 |
| 268 | +- Microsoft.IdentityModel.JsonWebTokens 7.7.1 |
| 269 | +- Microsoft.IdentityModel.Protocols.OpenIdConnect 7.7.1 |
| 270 | +- System.Buffers 4.5.1 |
| 271 | +- System.Data.Common 4.3.0 |
| 272 | +- System.Security.Cryptography.Pkcs 8.0.1 |
| 273 | +- System.Text.Encodings.Web 8.0.0 |
| 274 | +- System.Text.Json 8.0.5 |
| 275 | + |
| 276 | +#### .NET 8.0 |
| 277 | + |
| 278 | +- Azure.Identity 1.13.2 |
| 279 | +- Microsoft.Bcl.Cryptography 8.0.0 |
| 280 | +- Microsoft.Data.SqlClient.SNI.runtime 6.0.2 |
| 281 | +- Microsoft.Extensions.Caching.Memory 8.0.1 |
| 282 | +- Microsoft.IdentityModel.JsonWebTokens 7.7.1 |
| 283 | +- Microsoft.IdentityModel.Protocols.OpenIdConnect 7.7.1 |
| 284 | +- Microsoft.SqlServer.Server 1.0.0 |
| 285 | +- System.Configuration.ConfigurationManager 8.0.1 |
| 286 | +- System.Security.Cryptography.Pkcs 8.0.1 |
| 287 | +- System.Text.Json 8.0.5 |
| 288 | + |
| 289 | +#### .NET 9.0 |
| 290 | + |
| 291 | +- Azure.Identity 1.13.2 |
| 292 | +- Microsoft.Bcl.Cryptography 9.0.4 |
| 293 | +- Microsoft.Data.SqlClient.SNI.runtime 6.0.2 |
| 294 | +- Microsoft.Extensions.Caching.Memory 9.0.4 |
| 295 | +- Microsoft.IdentityModel.JsonWebTokens 7.7.1 |
| 296 | +- Microsoft.IdentityModel.Protocols.OpenIdConnect 7.7.1 |
| 297 | +- Microsoft.SqlServer.Server 1.0.0 |
| 298 | +- System.Configuration.ConfigurationManager 9.0.4 |
| 299 | +- System.Security.Cryptography.Pkcs 9.0.4 |
| 300 | +- System.Text.Json 9.0.5 |
0 commit comments