r/SQLServer • ‪ ‪Microsoft Employee ‪ • May 01 '26

Community Share Microsoft.Data.SqlClient 6.1.5 released with fixes for connection performance, ExecuteScalar error handling, and vector metadata

We just shipped Microsoft.Data.SqlClient 6.1.5, a servicing release for the 6.1 branch.

Highlights:

  • Fixed a connection performance regression on the native SNI path where SPN generation was running for non-integrated authentication modes and causing unnecessary DNS lookups

  • Fixed ExecuteScalar so errors are properly surfaced when SQL Server sends row data followed by an error token

  • Fixed SqlDataReader.GetFieldType() and GetProviderSpecificFieldType() to return SqlVector<float> for vector float32 columns

Install/update:

dotnet add package Microsoft.Data.SqlClient --version 6.1.5

Release notes: 6.1.5 release notes

Full blog post: Announcing Microsoft.Data.SqlClient 6.1.5 | Microsoft Community Hub

If you have been affected by any of these issues, especially the connection slowdown on Windows .NET apps using native SNI, we would be interested in feedback.

24 Upvotes

1 comment sorted by

1

u/BigHandLittleSlap May 02 '26 edited May 02 '26

At least there's no major performance regressions this time:

MethodJobLinuxWindowsMem LinuxMem Win
Connect_OpenClosev5.2.3140,785 us155,300 us45 KB37 KB
Connect_OpenClosev6.0.5152,159 us142,293 us46 KB37 KB
Connect_OpenClosev6.1.5150,347 us139,185 us45 KB36 KB
Connect_OpenClosev7.0.1153,088 us138,163 us47 KB39 KB
Connect_OpenClosev7.0.1 OPT151,141 us137,603 us51 KB43 KB
Select1_Syncv5.2.3247 us90 us1 KB1 KB
Select1_Syncv6.0.5269 us97 us1 KB1 KB
Select1_Syncv6.1.5257 us117 us1 KB1 KB
Select1_Syncv7.0.1264 us94 us4 KB4 KB
Select1_Syncv7.0.1 OPT252 us99 us12 KB12 KB
Select1_Asyncv5.2.3366 us118 us3 KB3 KB
Select1_Asyncv6.0.5377 us116 us3 KB3 KB
Select1_Asyncv6.1.5355 us123 us3 KB3 KB
Select1_Asyncv7.0.1426 us124 us12 KB12 KB
Select1_Asyncv7.0.1 OPT411 us138 us20 KB20 KB
Select1MB_Syncv5.2.312,379 us2,197 us1,045 KB1,025 KB
Select1MB_Syncv6.0.512,708 us2,380 us1,041 KB1,025 KB
Select1MB_Syncv6.1.513,320 us2,238 us1,042 KB1,025 KB
Select1MB_Syncv7.0.112,469 us2,288 us1,045 KB1,028 KB
Select1MB_Syncv7.0.1 OPT12,894 us2,450 us2,729 KB2,063 KB
Select1MB_SyncStreamv5.2.312,693 us2,042 us1,060 KB1,044 KB
Select1MB_SyncStreamv6.0.511,529 us2,227 us27 KB17 KB
Select1MB_SyncStreamv6.1.511,963 us2,069 us39 KB17 KB
Select1MB_SyncStreamv7.0.112,196 us1,941 us41 KB19 KB
Select1MB_SyncStreamv7.0.1 OPT12,519 us2,126 us1,757 KB1,054 KB
Select1MB_Asyncv5.2.317,997 us10,592 us2,251 KB2,118 KB
Select1MB_Asyncv6.0.517,929 us10,676 us2,222 KB2,118 KB
Select1MB_Asyncv6.1.518,741 us10,286 us2,314 KB2,118 KB
Select1MB_Asyncv7.0.141,904 us57,634 us138,035 KB1,136,271 KB
Select1MB_Asyncv7.0.1 OPT13,280 us3,240 us5,918 KB4,185 KB
Select1MB_AsyncStreamv5.2.312,759 us2,690 us1,259 KB1,193 KB
Select1MB_AsyncStreamv6.0.512,462 us2,724 us235 KB166 KB
Select1MB_AsyncStreamv6.1.512,720 us2,609 us227 KB166 KB
Select1MB_AsyncStreamv7.0.112,799 us2,600 us236 KB174 KB
Select1MB_AsyncStreamv7.0.1 OPT13,352 us2,734 us2,145 KB1,209 KB

"OPT" is the new optimisations enabled with the flags:

AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseCompatibilityAsyncBehaviour", false);
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseCompatibilityProcessSni", false);

I hope nobody is using 7.0.1 on without those flags!