All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog
This update brings the below changes over the previous release:
- Added a new
AccessTokenCallBack
API toSqlConnection
. #1260 - Added support for the
SuperSocketNetLib
registry option for Encrypt on .NET on Windows. #2047
- Fixed
SqlDataAdapter.Fill
and configurable retry logic issue on .NET Framework. #2084 - Fixed
SqlConnectionEncryptOption
type conversion by introducing theSqlConnectionEncryptOptionConverter
attribute when using appsettings.json files. #2057 - Fixed th-TH culture info issue on Managed SNI. #2066
- Switched to the new .NET NegotiateAuthentication API on .NET 7.0 and above for SSPI token negotiation using Managed SNI. #2063
- Removed
ignoreSniOpenTimeout
in open connection process on Windows. #2067 - Enforce explicit ordinal for internal
StringComparison
operations. #2068 - Code health improvements: #1959, #2071, #2073, #2088
This update brings the below changes over the previous release:
- Added new property
RowsCopied64
toSqlBulkCopy
. #2004
- Fixed socket synchronization issue during connect in managed SNI. #1029
- Fixed issue with
SqlConnectionStringBuilder
property indexer not supporting non-string values. #2018
- Moved to new System.Data.SqlTypes APIs in .NET 7 and upper. 1934 and #1981
- Changed UseOneSecFloorInTimeoutCalculationDuringLogin App Context switch default to true and extended its effect to .NET and .NET Standard. #2012
- Updated
Microsoft.Identity.Client
version from 4.47.2 to 4.53.0. #2031, #2055 - Code health improvement: #1985
This update brings the below changes over the previous release:
- Added support of
SqlDiagnosticListener
on .NET Standard. #1931
- Fixed AE enclave retry logic for async queries. #1988
- Fixed activity correlator to continue use of same GUID for connection activity. #1997
- Fixed behavior when error class is greater than 20 on connection retry. #1953
- Fixed error message when symmetric key decryption failed using Always Encrypted. #1948
- Fixed TransactionScope connection issue when Enlist is enable, Pooling is disabled and network connection type is Redirect. #1960
- Fixed TDS RPC error on large queries in SqlCommand.ExecuteReaderAsync. #1936
- Fixed throttling of token requests by calling AcquireTokenSilent. #1925
- Fixed Linux code coverage result in Build proj. #1950
- Fixed NullReferenceException in GetBytesAsync. #1906
- Fixed Transient fault handling issue with OpenAsync. #1983
- Fixed invariant mode checks. #1917
- Fixed GC behavior in TdsParser by adding array rental capability in TryReadPlpUnicodeChars. #1866
- Updated Azure Identity version from 1.7.0 to 1.8.0. #1921
- Improved parsing buffered characters in
TdsParser
. #1544 - Removed reference to Microsoft.Win32.Registry since it's shipped starting with .NET 6.0. #1974
- Added Microsoft.SqlServer.Types to verify support for SqlHierarchyId and Spatial for .NET Core. #1848
- Code health improvements:#1943#1949#1198#1829
This update brings the below changes over the previous release:
- Fixed an incorrect exception when a symmetric key fails to decrypt a column using Always Encrypted. #1968
- Fixed
TransactionScope
connection issue whenEnlist
isenabled
,Pooling
isdisabled
, andNetwork Connection Type
is set toRedirect
. #1967 - Fixed throttling of token requests by calling
AcquireTokenSilent
. #1966 - Fixed TDS RPC error on large queries in
SqlCommand.ExecuteReaderAsync
. #1965 - Fixed
NullReferenceException
inGetBytesAsync
. #1964
This update brings the below changes over the previous release:
- Fixed thread safety of transient error list in configurable retry logic. #1882
- Fixed deadlock when using SinglePhaseCommit with distributed transactions. #1801
- Fixed Dedicated Admin Connections (DAC) to localhost in managed SNI. #1865
- Updated
Microsoft.Data.SqlClient.SNI
(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime
(.NET Core/Standard dependency) version to5.1.0
. #1889 which includes fix for AppDomain crash in issue #1418, TLS 1.3 Support, removal of ARM32 binaries, and support for theServerCertificate
option. - Code health improvements #1867 #1849
This update brings the below changes over the previous release:
- Added support for .NET 6.0. #1704
- Added support for
DateOnly
andTimeOnly
forSqlParameter
value andGetFieldValue
. #1813 - Added support for TLS 1.3 for .NET Core and SNI Native. #1821
- Added
ServerCertificate
support forEncrypt=Mandatory
orEncrypt=Strict
. #1822 - Added Windows ARM64 support when targeting .NET Framework. #1828
- Updated
Microsoft.Data.SqlClient.SNI
(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime
(.NET Core/Standard dependency) version to5.1.0-preview2.22311.2
. #1831 which includes the fix for the TLS 1.3 timeout and double handshake issue, removal of ARM32 binaries, and support for theServerCertificate
option. #1822 - Reverted "Excluding unsupported TLS protocols" for issue #1151 (i.e. removed
Switch.Microsoft.Data.SqlClient.EnableSecureProtocolsByOS
) by adding support for TLS 1.3. #1824 - Code health improvements #1812 #1520
This update brings the below changes over the previous release:
- Fixed
ReadAsync()
behavior to register Cancellation token action before streaming results. #1781 - Fixed
NullReferenceException
when assigningnull
toSqlConnectionStringBuilder.Encrypt
. #1778 - Fixed missing
HostNameInCertificate
property in .NET Framework Reference Project. #1776 - Fixed async deadlock issue when sending attention fails due to network failure. #1766
- Fixed failed connection requests in ConnectionPool in case of PoolBlock. #1768
- Fixed hang on infinite timeout and managed SNI. #1742
- Fixed Default UTF8 collation conflict. #1739
- Updated
Microsoft.Data.SqlClient.SNI
(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime
(.NET Core/Standard dependency) version to5.1.0-preview1.22278.1
. #1787 which includes TLS 1.3 Support and fix for AppDomain crash in issue #1418 - Changed the
SqlConnectionEncryptOption
string parser to public. #1771 - Converted
ExecuteNonQueryAsync
to use async context object. #1692 - Code health improvements #1604 #1598 #1595 #1443
- When using
Encrypt=Strict
with TLS v1.3, the TLS handshake occurs twice on initial connection on .NET Framework due to a timeout during the TLS handshake and a retry helper re-establishes the connection; however, on .NET Core, it will throw aSystem.ComponentModel.Win32Exception (258): The wait operation timed out.
and is being investigated. If you're using Microsoft.Data.SqlClient with .NET Core on Windows 11, you will need to enable the managed SNI on Windows context switch using following statementAppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseManagedNetworkingOnWindows", true);
to use TLS v1.3 or disabling TLS 1.3 from the registry by assigning0
to the followingHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client\Enabled
registry key and it'll use TLS v1.2 for the connection. This will be fixed in a future release.
- Fixed memory leak regression from #1785 using a
DisposableTemporaryOnStack
struct. #1980 - Fixed
TransactionScope
connection issue whenEnlist
isenabled
,Pooling
isdisabled
, andNetwork Connection Type
is set toRedirect
. #1978 - Fixed an incorrect exception when a symmetric key fails to decrypt a column using Always Encrypted. #1977
- Fixed TDS RPC error on large queries in
SqlCommand.ExecuteReaderAsync
. #1976 - Fixed deadlock when using SinglePhaseCommit with distributed transactions. #1975
- Fixed missing
HostNameInCertificate
connection string property in .NET Framework. #1782 - Fixed async deadlock issue when sending attention fails due to network failure. #1783
- Fixed Null Reference Exception on assigning
null
toSqlConnectionStringBuilder.Encrypt
. #1784 - Fixed
ReadAsync()
behavior to register Cancellation token action before streaming results. #1785 - Fixed hang on infinite timeout and managed SNI. #1798
- Fixed Default UTF8 collation conflict. #1799
- Updated
Microsoft.Data.SqlClient.SNI
(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime
(.NET Core/Standard dependency) version to5.0.1
#1795, which includes the fix for AppDomain crash introducing in issue #1418.
This update brings the below changes over the previous release:
- Added support for
TDS 8
. To use TDS 8, users should specifyEncrypt=Strict
in the connection string. #1608 - Added
TDS 8
version for TDSLogin. #1657
- Fixed null SqlBinary as rowversion. #1688
- Fixed KeyNotFoundException for the
FailoverPartner
key on SQL servers with availability group configured. #1614 - Fixed small inconsistency between netcore and netfx for
EncryptionOptions
. #1672 - Fixed
Microsoft.SqlServer.Server
netcore project package reference. #1654
- Updated
AuthProviderInfo
struct to be matched the changes in native SNI forTDS 8
server certificate validation. #1680 - Updated default system protocol for
TDS 8
on managed code. #1678 - Updated
Microsoft.Data.SqlClient.SNI
(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime
(.NET Core/Standard dependency) version to5.0.0
. #1680 - Updated IdentityModel dependency from 6.8.0 to 6.21.0 and IdentityClient from 4.32.2 to 4.45.0. #1646
- Changed from union overlay design to reflected interfaces for SqlTypes. 1647
This update brings the below changes over the previous release:
- Dropped classes from the
Microsoft.Data.SqlClient.Server
namespace and replaced them with supported types from the Microsoft.SqlServer.Server package.#1585 The affected classes and enums are:- Microsoft.Data.SqlClient.Server.IBinarySerialize -> Microsoft.SqlServer.Server.IBinarySerialize
- Microsoft.Data.SqlClient.Server.InvalidUdtException -> Microsoft.SqlServer.Server.InvalidUdtException
- Microsoft.Data.SqlClient.Server.SqlFacetAttribute -> Microsoft.SqlServer.Server.SqlFacetAttribute
- Microsoft.Data.SqlClient.Server.SqlFunctionAttribute -> Microsoft.SqlServer.Server.SqlFunctionAttribute
- Microsoft.Data.SqlClient.Server.SqlMethodAttribute -> Microsoft.SqlServer.Server.SqlMethodAttribute
- Microsoft.Data.SqlClient.Server.SqlUserDefinedAggregateAttribute -> Microsoft.SqlServer.Server.SqlUserDefinedAggregateAttribute
- Microsoft.Data.SqlClient.Server.SqlUserDefinedTypeAttribute -> Microsoft.SqlServer.Server.SqlUserDefinedTypeAttribute
- (enum) Microsoft.Data.SqlClient.Server.DataAccessKind -> Microsoft.SqlServer.Server.DataAccessKind
- (enum) Microsoft.Data.SqlClient.Server.Format -> Microsoft.SqlServer.Server.Format
- (enum) Microsoft.Data.SqlClient.Server.SystemDataAccessKind -> Microsoft.SqlServer.Server.SystemDataAccessKind
- Added support for
TDS 8
. To use TDS 8, users should specify Encrypt=Strict in the connection string. Strict mode disables TrustServerCertificate (always treated as False in Strict mode). HostNameInCertificate has been added to help some Strict mode scenarios. #1608 - Added support for specifying Server SPN and Failover Server SPN on the connection. #1607
- Added support for aliases when targeting .NET Core on Windows. #1588
- Fixed naming, order, and formatting for
SqlDiagnosticsListener
on .NET Core and .NET. #1637 - Fixed NullReferenceException during Azure Active Directory authentication. #1625
- Added CommandText length validation when using stored procedure command types. #1484
- Fixed
GetSchema("StructuredTypeMembers")
to return correct schema information. #1500, #1639 - Fixed NullReferenceException when using
SqlDependency.Start
against an Azure SQL Database.#1294 - Send the correct retained transaction descriptor in the MARS TDS Header when there is no current transaction on .NET 5+ and .NET Core. #1624
- Parallelize SSRP requests (instance name resolution) on Linux and macOS when MultiSubNetFailover is specified. #1578
- Adjust the default ConnectRetryCount against Azure Synapse OnDemand endpoints #1626
- Code health improvements #1353 #1354 #1525 #1186
- Update Azure Identity dependency from 1.5.0 to 1.6.0.#1611
- Improved Regex for SqlCommandSet #1548
- Rework on
TdsParserStateObjectManaged
with nullable annotations. #1555
This update brings the below changes over the previous release:
- Dropped support for .NET Framework 4.6.1 #1574
- Fixed connection failure by skipping Certificate Revocation List (CRL) check during authentication #1559
- Updated
Microsoft.Data.SqlClient.SNI
(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime
(.NET Core/Standard dependency) version to5.0.0-preview2.22084.1
. #1563 - Updated
Azure.Identity
version to1.5.0
andMicrosoft.Identity.Client
version to4.30.1
#1462 - Replaced AlwaysEncryptedAttestationException with SqlException #1515
- Improved error message when adding wrong type to SqlParameterCollection #1547
- Code health improvements #1343 #1370 #1371 #1438 #1483
- Added SqlDataSourceEnumerator. #1430
- Added new attestation protocol
None
option to forgo enclave attestation when using VBS enclaves. #1425 and #1419 - Added a new AppContext switch to suppress insecure TLS warnings. #1457
- Fixed all documentation paths to Unix format path. #1442
- Fixed thread safety issue for
GetEnclaveProvider
by converting dictionary to concurrent dictionary. #1451
- Updated
Microsoft.Data.SqlClient.SNI
(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime
(.NET Core/Standard dependency) version tov5.0.0-preview1.22062.1
. #1537 - Modernized style in ValueUtilSmi. #1351
- Changed SQL server codenames to version names. #1439
- Prevented subtype generation in project files. #1452
- Changed
Array.Copy
toBuffer.BlockCopy
for byte arrays. #1366 - Changed files in csproj to be alphabetically sorted in netfx and netcore. #1364
- Sqlstream, SqlInternalTransaction and MetaDataUtilsSmi are moved to shared folder. #1337, #1346 and #1339
- Various code improvements: #1197, #1313,#1330,#1366, #1435,#1478
- Fixed connection failure by not requiring Certificate Revocation List (CRL) check during authentication. #1706
- Parallelize SSRP requests on Linux and macOS when MultiSubNetFailover is specified. #1708, #1746
- Added CommandText length validation when using stored procedure command types. #1709
- Fixed NullReferenceException during Azure Active Directory authentication. #1710
- Fixed null SqlBinary as rowversion. #1712
- Fixed table's collation overriding with default UTF8 collation. #1749
- Updated
Microsoft.Data.SqlClient.SNI
(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime
(.NET Core/Standard dependency) version tov4.0.1
#1755, which includes the fix for AppDomain crash introducing in issue #1418 - Various code improvements: #1711
- Added new Attestation Protocol
None
forVBS
enclave types. This protocol will allow users to forgo enclave attestation for VBS enclaves. #1419 #1425
- Fixed throttling of token requests by calling AcquireTokenSilent in AAD Integrated/Password flows when the account is already cached.#1995
- Fixed TDS RPC error on large queries in
SqlCommand.ExecuteReaderAsync
.#1987
- Fixed connection failure by not requiring Certificate Revocation List (CRL) check during authentication. #1718
- Parallelize SSRP requests on Linux and macOS when MultiSubNetFailover is specified. #1720, #1747
- Added CommandText length validation when using stored procedure command types. #1721
- Fixed NullReferenceException during Azure Active Directory authentication. #1722
- Fixed null SqlBinary as rowversion. #1724
- Fixed table's collation overriding with default UTF8 collation. #1750
- Updated
Microsoft.Data.SqlClient.SNI
(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime
(.NET Core/Standard dependency) version tov4.0.1
#1754, which includes the fix for AppDomain crash introducing in issue #1418 - Various code improvements: #1723
Added AppContext switch SuppressInsecureTLSWarning
to allow suppression of TLS security warning when using Encrypt=false
in the connection string. #1457
- Fixed Kerberos authentication failure when using .NET 6. #1411
- Fixed connection failure when using
SqlLocalDB
instance pipe name. #1433 - Fixed a failure when executing concurrent queries requiring enclaves. #1451
- Updated obsolete API calls targeting .NET 6. #1401
- Added missing
SqlClientLogger
class to .NET Core refs and missingSqlClientLogger.LogWarning
method in .NET Framework refs #1392
- Avoid throwing unnecessary exception when an invalid
SqlNotificationInfo
value is received from SQL Server #1378 - Updated
Microsoft.Data.SqlClient.SNI
(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime
(.NET Core/Standard dependency) version tov4.0.0
#1391
This update brings the below changes over the previous release:
- Dropped support for .NET Core 2.1 #1272
- [.NET Framework] Exception will not be thrown if a User ID is provided in the connection string when using
Active Directory Integrated
authentication #1359
- Add
GetFieldValueAsync<T>
andGetFieldValue<T>
support forXmlReader
,TextReader
,Stream
#1019
- Fixed
FormatException
when opening a connection with event tracing enabled #1291 - Fixed improper initialization of
ActiveDirectoryAuthenticationProvider
#1328 - Fixed
MissingMethodException
when accessingSqlAuthenticationParameters.ConnectionTimeout
#1336 - Fixed data corruption issues by reverting changes to async cancellations #1352
- Fixed performance degradation by reverting changes to MARS state machine #1357
- Fixed bug where environment variables are ignored when using
Active Directory Default
authentication #1360
- Removed attributes for classes used in Microsoft.VSDesigner due to lack of support for Microsoft.Data.SqlClient #1296
- Disable encryption when connecting to SQL LocalDB #1312
- Various code health and performance improvements. See milestone for more info.
This update brings the below changes over the previous release:
- Removed
Configurable Retry Logic
safety switch. #1254
- Added support for
SqlFileStream
on Windows using .NET Standard 2.0 and above. #1240 - Added support for localdb
shared instance
using managed SNI. #1237
- Fixed
.NET decimal
conversion fromSqlDecimal
. #1179 - Fixed
Event Source
changes on TryBeginExecuteEvent and WriteEndExecuteEvent to address the failure on other MS products such as OpenTelemetry and Application Insight. #1258 - Fixed command's async cancellation. #956
- Fixed deadlock in transaction using .NET Framework. #1242
- Fixed unknown transaction state issues when prompting delegated transaction. 1216
- Changed
Encrypt
connection string property to betrue
by default. #1210 - The driver now throws
SqlException
replacingAggregateException
for active directory authentication modes. #1213 - Dropped obsolete
Asynchronous Processing
connection property from .NET Framework. #1148
- Added
SqlCommand.EnableOptimizedParameterBinding
property that when enabled increases performance for commands with very large numbers of parameters. #1041 - Included
42108
and42109
error codes to retriable transient errors list. #1215 - Added new App Context switch to use OS enabled client protocols only. #1168
- Added
PoolBlockingPeriod
connection property support in .NET Standard. #1181 - Added support for
SqlDataReader.GetColumnSchema()
in .NET Standard. #1181 - Added PropertyGrid support with component model annotations to
SqlConnectionStringBuilder
properties for .NET Core. #1152
- Fixed issue with connectivity when TLS 1.3 is enabled on client and server. #1168
- Fixed issue with connection encryption to ensure connections fail when encryption is required. #1210
- Fixed issue where connection goes to unusable state. #1128
- Fixed recursive calls to
RetryLogicProvider
when callingSqlCommand.ExecuteScalarAsync
. #1220 - Fixed async deadlock scenarios in web contexts with configurable retry logic provider. #1220
- Fixed
EntryPointNotFoundException
inInOutOfProcHelper
constructor. #1120 - Fixed async thread blocking issues on
SqlConnection.Open()
for active directory authentication modes. #1213 - Fixed driver behavior for Always Encrypted with secure enclaves to not fail when no user parameters have been provided. #1115
- Fixed bug with
LegacyRowVersionNullBehavior
App Context switch. #1182 - Fixed issues in Strings.resx file containing error messages. #1136 #1178
- Updated error code to match with Windows when certificate validation fails in non-Windows client environments. #1130
- Removed designer attributes from
SqlCommand
andSqlDataAdapter
. #1132 - Updated configurable retry logic default retriable error list. #1125
- Improved performance by changing
SqlParameter
bool fields to flags. #1064 - Improved performance by implementing static delegates. #1060
- Optimized async method allocations in .NET Framework by porting changes from .NET Core. #1084
- Various code improvements #902 #925 #933 #934 #1024 #1057 #1122 #1133 #1134 #1141 #1187 #1188 #1223 #1225 #1226
- Fixed throttling of token requests by calling AcquireTokenSilent in AAD Integrated/Password flows when the account is already cached.#1926
- Fixed TDS RPC error on large queries in SqlCommand.ExecuteReaderAsync.#1939
- Added Windows ARM64 support when targeting .NET Framework. #1908
- Fixed thread safety of transient error list in configurable retry logic. #1911
- Fixed deadlock when using SinglePhaseCommit with distributed transactions. #1912
- Fixed Default UTF8 collation conflict. #1910
- Added CommandText length validation when using stored procedure command types. #1909
- Fixed null SqlBinary as rowversion. #1700
- Fixed Kerberos authentication failure when using .NET 6. #1696
- Fixed NullReferenceException during Azure Active Directory authentication. #1695
- Removed union overlay design and use reflection in
SqlTypeWorkarounds
. #1699
- Added new Attestation Protocol
None
forVBS
enclave types. This protocol will allow users to forgo enclave attestation for VBS enclaves. #1539 - Included
42108
and42109
error codes to retriable transient errors list. #1560
- Changed EnclaveDelegate.Crypto GetEnclaveProvider to use a thread safe concurrent dictionary. [#1564](dotnet#1564
- Fixed async thread blocking issues on
SqlConnection.Open()
for active directory authentication modes. #1270 - Fixed unknown transaction state issues when prompting delegated transaction. 1247
- Fixed issue with connection encryption to ensure connections fail when encryption is required. #1233
- Fixed bug with
LegacyRowVersionNullBehavior
App Context switch. #1246 - Fixed recursive calls to
RetryLogicProvider
when callingSqlCommand.ExecuteScalarAsync
. #1245 - Fixed async deadlock scenarios in web contexts with configurable retry logic provider. #1245
- Fixed deadlock in transaction using .NET Framework. #1243
- Fixed issue where connection goes to unusable state. #1238
- Added support for column encryption key caching when the server supports retrying queries that require enclave computations #1062
- Added support for configurable retry logic configuration file in .NET Standard #1090
- Updated
Microsoft.Data.SqlClient.SNI
(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime
(.NET Core/Standard dependency) version tov3.0.0
#1102 - Improved event counter display information #1091
- Modified column encryption key store provider registrations to give built-in system providers precedence over providers registered on connection and command instances. #1101
- Fixed TDS RPC error on large queries in
SqlCommand.ExecuteReaderAsync
.#1986 - Fixed Default UTF8 collation conflict. #1989
- Fixed async deadlock issue when sending attention fails due to network failure. #1767
- Added CommandText length validation when using stored procedure command types. #1726
- Fixed Kerberos authentication failure when using .NET 6. #1727
- Removed union overlay design and use reflection in
SqlTypeWorkarounds
. #1729
- Fixed issue with connection encryption to ensure connections fail when encryption is required. #1232
- Fixed issue where connection goes to unusable state. #1239
- Fixed wrong data blended with transactions in .NET Core by marking a connection as doomed if the transaction completes or aborts while there is an open result set #1051
- Fixed race condition issues between SinglePhaseCommit and TransactionEnded events #1049
- Added support for "Active Directory Default" authentication mode #1043
- Added support for connection-level and command-level registration of custom key store providers to enable multi-tenant applications to control key store access #1045 #1056 #1078
- Added IP address preference support for TCP connections #1015
- Fixed corrupted connection issue when an exception occurs during RPC execution with TVP types #1068
- Fixed race condition issues between SinglePhaseCommit and TransactionEnded events #1042
- Updated error messages for enclave exceptions to include a link to a troubleshooting guide. #994
- Changes to share common files between projects #1022 #1038 #1040 #1033 #1028 #1039
User Id
connection property now requiresClient Id
instead ofObject Id
for User-Assigned Managed Identity #1010SqlDataReader
now returns aDBNull
value instead of an emptybyte[]
. Legacy behavior can be enabled by settingAppContext
switch Switch.Microsoft.Data.SqlClient.LegacyRowVersionNullBehavior #998
- Microsoft.Data.SqlClient now depends on Azure.Identity library to acquire a token for "Active Directory Managed Identity/MSI" and "Active Directory Service Principal" authentication modes. #1010
- Upgraded Native SNI dependency to v3.0.0-preview1 along with enhanced event tracing support #1006
- Fixed wrong data blended with transactions in .NET Core by marking a connection as doomed if the transaction completes or aborts while there is an open result set#1023
- Fixed derived parameters containing incorrect TypeName #1020
- Fixed server connection leak possibilities when an exception occurs in pooling layer #890
- Fixed IP connection resolving logic in .NET Core #1016 #1031
- Performance improvements in
SqlDateTime
toDateTime
internal conversion method #912 - Improved memory allocation by avoiding unnecessary context switching 1008
- Updated
Microsoft.Identity.Client
version from 4.21.1 to 4.22.0 #1036 - Various performance improvements #963 #996 #1004 #1012 #1017
- Event source tracing improvements #1018
- Changes to share common files between NetFx and NetCore source code #871 #887
- The minimum supported .NET Framework version has been increased to v4.6.1. .NET Framework v4.6.0 is no longer supported. #899
- Added support for Configurable Retry Logic #693 #966
- Added support for Event counters in .NET Core 3.1+ and .NET Standard 2.1+ #719
- Added support for Assembly Context Unloading in .NET Core #913
- Added missing
System.Runtime.Caching
dependency for .NET Standard assemblies #877
- Fixed wrong results issues by changing the timeout timer to ensure a correct execution state #906
- Fixed Kerberos authentication issues when configured Server Principal Name (SPN) didn't contain default port #930
- Fixed MARS header errors when
MakeReadAsyncBlocking
App Context switch is set tofalse
#910 #922 - Fixed unwanted exceptions being thrown from
SqlDataReader.Dispose
#920 - Fixed issues connecting to SQL Server instance with instance name specified from Unix environment #870
- Fixed TCP Keep Alive issues in .NET Core #854
- Fixed Kerberos Authentication issues caused due to regression #845
- Fixed issues with System-Assigned Managed Identity in Azure Functions #829
- Fixed missing error messages in Managed SNI #882
- Fixed event source trace string issue #940
- Changed App Context switch
MakeReadAsyncBlocking
default tofalse
#937 - Replaced usage of
BinaryFormatter
withDataContractSerializer
#869 - Prohibited
DtdProcessing
onXmlTextReader
instance in .NET Core #884 - Improved performance by reducing memory allocations in
SerializeEncodingChar
/WriteEncodingChar
and some options boxing #785 - Improved performance by preventing orphaned active packets being GC'ed without clear #888
- Various performance improvements #889 #900
- Partial event source tracing improvements in .NET Core #867 #897
- Changes to share common files between NetFx and NetCore source code #827 #835 #838 #881
- Fixed wrong results issues by changing the timeout timer to ensure a correct execution state #950
- Fixed MARS header contains errors issue against .NET Framework 4.8+ #959
- Fixed issue connecting with instance name from a Linux/macOS environment #874
- Fixed wrong results issues by changing the timeout timer to ensure a correct execution state #929
- Fixed a vulnerability by prohibiting
DtdProcessing
onXmlTextReader
instances in .NET Core #885 - Fixed Kerberos authentication when an SPN does not contain the port #935
- Fixed missing error messages in Managed SNI #883
- Fixed missing
System.Runtime.Caching
dependency for .NET Standard assemblies #878 - Fixed event source tracing issues #941
- Fixed MARS header contains errors issue against .NET Framework 4.8.1 #928
- Fixed issue with System-Assigned Managed Identity in Azure Functions #841
- Fixed issue with Kerberos Authentication for .NET Core in Unix environments #848
- Fixed issue with TCP Keep Alive for .NET Core in Unix environments #855
- Microsoft.Data.SqlClient symbols are now source-linked #789
- Added an API to clear cached access tokens from the token provider #800
- Added
SqlFacetAttribute
implementation #757
- Fixed
InvalidOperationException
andNotSupportedException
errors due toWriteAsync
collisions #796 - Fixed incorrect Settings.Async flag in
ExecuteXmlReaderAsync
#782 - Fixed a regression in Windows Integrated authentication when using managed networking #777
- Fixed Bulk Copy Async deadlock issues with custom
IDataReader
when usingSqlDataReader
internally #779 - Fixed a serialization issue with
SqlException
in .NET Core #780
- Updated versions of
Microsoft.IdentityModel
package dependencies #794
- Added support for Azure Active Directory Managed Identity authentication #730
- Added support to provide a user-defined application client ID when using Active Directory authentication #740
- Added the "Command Timeout" connection string property to set a default timeout for all commands executed with the connection #722
- Added support for Always Encrypted on all supported platforms for .NET Standard 2.0 #756
- Fixed unobserved exception issue when a timeout occurs before a faulted task completes with an exception #688 #773
- Fixed an issue where driver continues to prompt for credentials when using Azure Active Directory authentication #770
- Updated
Microsoft.Data.SqlClient.SNI
(.NET Framework dependency) andMicrosoft.Data.SqlClient.SNI.runtime
(.NET Core/Standard dependency) version tov2.1.1
and removed symbols fromMicrosoft.Data.SqlClient.SNI.runtime
, which are now published to Microsoft Symbols Server #764 - Updated
Microsoft.Identity.Client
dependency version tov4.21.1
#765 - Performance improvements when establishing an encrypted channel by removing sync over async method calls #541
- Performance improvements by replacing heap-allocated arrays with Spans #667
- Moved common files to shared folder between .NET Framework and .NET Core implementation #734 #753
- Added support for a new Configuration Section,
SqlClientAuthenticationProviders
(duplicate of existingSqlAuthenticationProviders
), to allow co-existence of configurations for both drivers, "System.Data.SqlClient" and "Microsoft.Data.SqlClient" #701
- Fixed pooled connection re-use on access token expiry issue when using Active Directory authentication modes #639
- Fixed transient fault handling for Pooled connections #638
- Fixed Enclave session cache issue with Azure Database #628
- Reverted changes to return empty DataTable from GetSchemaTable to return null as before. #697
- Fixed configuration section collision issue with System.Data.SqlClient type #701
- Fixed blank error message [HTTP Provider] issues due to unexpected pre-login failures when using Native SNI. Fixed with Microsoft.Data.SqlClient.SNI v2.0.1 and Microsoft.Data.SqlClient.SNI.runtime v2.0.1 release versions.
- Added support for Always Encrypted with secure enclaves on Unix for .NET Core 2.1+ and on all supported platforms for .NET Standard 2.1+ #676
- Added support for Azure Active Directory Device Code Flow authentication #597
- Added Sensitivity Rank support in Sensitivity Classification information #626
- Added support to obtain
ServerProcessId
(SPID) information on an activeSqlConnection
instance #660 - Added support for a new Configuration Section,
SqlClientAuthenticationProviders
(duplicate of existingSqlAuthenticationProviders
), to allow co-existence of configurations for both drivers, "System.Data.SqlClient" and "Microsoft.Data.SqlClient" #702 - Added TraceLogging in Native SNI to extend
SqlClientEventSource
support #650 - Updated Microsoft.Data.SqlClient.SNI (.NET Framework dependency) and Microsoft.Data.SqlClient.SNI.runtime (.NET Core/Standard dependency) version to v2.1.0 with trace logging implementation #705
- Fixed Enclave session cache issue with Azure Database #686
- Fixed pooled connection re-use on access token expiry issue when using Active Directory authentication modes #635
- Fixed transient fault handling for Pooled connections #637
- Fixed SPN generation issue when no port is provided #629
- Fixed missing null checks for
SqlErrors
inSqlException
for .NET Framework implementation #698
- Performance improvements by fixing unnecessary allocations with EventSource implementation #684
- Reverted changes to return empty DataTable from GetSchemaTable to return null as before. #696
- Removed multiple
CacheConnectionStringProperties
calls when settingConnectionString
properties #683 - Code Improvements by only checking inexact match when no exact match is found for an embedded resource #668
- Changed
_SqlMetaData
to lazy initialize hidden column map #521 - Renamed internal string resource file and helpers for .NET Core implementation #671
- Performance improvements by reworking
ExecuteReaderAsync
to minimize allocations #528 - Performance improvements by moving
DataReader
caches to internal connection #499 - Moved common files to shared folder between .NET Framework and .NET Core implementation #618 #625
- Added internal driver support to provide resiliency to DNS failures #594
- Added support for
Active Directory Integrated
,Active Directory Interactive
andActive Directory Service Principal
authentication mode for .NET Core and .NET Standard #560 - Added support for
Active Directory Service Principal
authentication mode for .NET Framework #560 - Added support for optional
ORDER
hints inSqlBulkCopy
for improved performance #540
- Fixed
SqlSequentialStream
multipacket read stalling issue in .NET Core #603 - Fixed code page issue for Kazakh collation in SQL Server #584
- Fixed stalled application issues when end of stream is reached #577
- Fixed driver behavior to not throw exception for invalid configuration file #573
- Fixed Object null reference issue when failover partner is set #588
- Fixed
applicationintent
connection string property issue #585
- Raise warning message when insecure TLS protocols are in use #591
- Modified enclave provider interface
SqlColumnEncryptionEnclaveProvider
to be internal #602 - This change is not likely to impact customer applications since secure enclaves is a relatively new feature and they would have had to implement their own enclave provider, which is not a trivial task. - Updated
SqlClientMetaDataCollectionNames
exposed constants by removing non-existing constants and adding new to the metadata collection #580
- Microsoft.Data.SqlClient (.NET Core and .NET Standard) on Windows is now dependent on Microsoft.Data.SqlClient.SNI.runtime, replacing the previous dependency on runtime.native.System.Data.SqlClient.SNI #570
- The new Microsoft.Data.SqlClient.SNI.runtime dependency adds support for the ARM platform along with the already supported platforms ARM64, x64 and x86 on Windows #570
- Improved driver performance by introducing managed packet recycling #389
- Fixed
SqlBulkCopy
to work with database columns containing metadata about data classification #568 - Fixed unsafe cast in
SqlException
forSerializationEntry.Value
- Fixed null reference exceptions in
SqlDelegatedTransaction
methods #563
- Standardized connection string properties for enhanced user experience #534
- Improved performance by reducing eventsource tracing related to allocations from TVP write methods #557 #564
- For .NET Framework applications consuming Microsoft.Data.SqlClient, the
SNI.dll
files previously downloaded to thebin\x64
andbin\x86
folders are now namedMicrosoft.Data.SqlClient.SNI.x64.dll
andMicrosoft.Data.SqlClient.SNI.x86.dll
and will be downloaded to thebin
directory, to support auto-loading in the application process #570. This change is not going to impact client applications unless a direct reference has been made toSNI.dll
or the x86 and x64 folders.
- Fixed driver behavior to not perform enlistment of pooled connection on aborted transaction #551
- Fixed issues introduced with MARS TDS Header fix in last release by reverting original change that caused issues. #550
- Allow passing username with Active Directory Interactive Authentication in .NET Framework #492
- Allow large UDT buffers for .NET Framework #456
- Added "Transaction Id" and "Client Version" in Diagnostic Source traces #515
- Added new
SqlConnectionOverrides
APIs to performSqlConnection.Open()
with fail fast option #463
- Addressed MARS TDS Header errors by reverting changes to make
SqlDataReader.ReadAsync()
non-blocking #547 - Fixed driver behavior to not perform enlistment of pooled connection in aborted transaction #543
- Fixed wrong application domain selected when starting
SqlDependencyListener
#410 - Added missing refs for
RowCopied
property inSqlBulkCopy
#508
- Improved performance by removing unwanted method calls in Event Source tracing #506
- Removed Diagnostic Source and Configuration Manager dependencies from .NET Standard implementation #535
- Removed redundant calls to
DbConnectionPoolKey.GetType()
#512
- Updated driver to perform decimal scale rounding to match SQL Server behavior #470
- Standardized App Context switch name that enables Managed SNI on Windows for .NET Core and .NET Standard (break only applies to 2.0 preview releases that introduced the switch) #548
- Fixed the ConnectionString's password persistence in .NET Core. #489
- Addressed MARS TDS header containing errors #510
- Updated driver libraries to be CLS Compliant #522
- Added support for capturing EventSource traces in .NET Framework, .NET Core, and .NET Standard applications #399 #461 #479 #483 #484
- Added support for Cross-platform TCP Keep Alive applicable to .NET Core 3.1+ applications #395
- Added support for enabling Managed networking implementation on Windows applicable to .NET Core and .NET Standard applications #477
- Added
RowsCopied
property inSqlBulkCopy
to expose count of copied rows #409 - Added "NeutralResourcesLanguage" attribute for .NET Framework assembly #433
- Added caching for invariant culture check result #376
- Added cached
SqlReferenceCollection.FindLiveReaderContext
objects #380
- Fixed Access Token behavior in connection pool to perform string comparison #443
- Fixed concurrent connection speed issues when connecting with Azure Active Directory Authentication modes in .NET Core #466
- Fixed issues with
Password
persistence in Connection String #453
- Updated all driver assemblies to be CLS Compliant #396
- Updated Bulk Copy error messages to also include Column, Row and non-encrypted Data information #437
- Updated error messages for "Always Encrypted - Secure Enclaves" to handle 'Attestation Protocol' and fixed typos #421 #397
- Removed sync over async in
SNINpHandle.EnableSsl
#474 - Changed non-generic
ArrayList
toList<T>
inSqlBulkCopy
#457 - Multiple performance improvements #377 #378 #379
- The driver will now perform Server Certificate validation when TLS encryption is enforced by the target Server, which is the default for Azure connections #391
SqlDataReader.GetSchemaTable()
now returns an emptyDataTable
instead of returningnull
#419
- Fixed deadlock issues by reverting async changes to
SNIPacket
#425
- Updated SNI package reference to include version range #425
- Added support to allow large UDT buffer size (upto
Int.MaxValue
) as supported by SQL Server starting TDS 7.3 #340
- Fixed issues with
SqlCommandSet
not working with Byte Array parameters #360 - Fixed Statement command cancellation in Managed SNI #248 - Ported dotnet/corefx#38271
- Fixed zero connection timeout issue in Managed SNI #332
- Fixed "DataType" metadata information for TinyInt datatype to be
System.Byte
#338 - Fixed driver behavior to use
CancellationTokenResource
only for non-infinite timeout and cleanup after usage #339 - Fixed
ConnectionTime
andClientConnectionId
reported bySqlStatistics
when connection is closed #341 - Fixed deadlock issues by reverting async changes to
SNIPacket
#349
- Improved performance of Managed SNI by removing double fetch of domain name #366
- Improved performance of Async Method Allocations in Managed SNI #328
- Improved performance of Managed SNI by enhancing utilization of resources #173 - Ported dotnet/corefx#35363 and dotnet/corefx#40732
- Improved performance of Managed SNI RPC Parameter Usage #209 - Ported dotnet/corefx#34049
- Changed enclave key map to be lazy initialized #372
- Changed
Recieve()
andReceiveAsync()
implementation to receive null packets on failure #350 - Changed
EnclaveProviderBase
caching implementation to support Async Scenarios (Introduces breaking changes) #346
- Added support for |DataDirectory| macro in
AttachDBFilename
for .NET Core client #284
- Fixed connection resiliency check #310
- Fixed
SNIPacket.ReadFromStreamAsync
to not consume sameValueTask
twice #295 - Fixed driver behavior to not send Attention signal for successful Bulk Copy operation #308
- Fixed driver behavior to abort connection when encountering
SqlException
onSqlTransaction.Commit
#299 - Fixed driver behavior to not throw exception on invalid app.config files #319
- Improved async read performance by adding multi-packet target buffer caching #285
- Improved performance of
TdsParserStateObject
andSqlDataReader
snapshot mechanisms #198 - Updated
SqlDataReader.Close
documentation #314
- Add support for secure enclaves with Always Encrypted #293
- Setting the value
DbParameter.DbType
toDbType.Time
property fails after setting the Value property #5 SQLDataAdapter.FillSchema
doesn't mark computed columns as readonly #275SqlDependency.Start
throwsFileNotFoundException
#260- Misleading
ADP_OpenReaderExists
exception message on MARS-disabled Sql Connection when incorrectly doing parallel requests #82 - SqlClient ManualTest
MARSSyncTimeoutTest
fails in managed mode #108 System.Data.SqlClient.SqlInternalConnectionTds
constructor purges original call stack when re-throwing an exception #100InvalidOperationException(SqlException)
onSqlBulkCopy
#221- Exception message grammar: "An SqlParameter [...] is not contained by this
SqlParameterCollection
" #159 - Fixing incorrect event id and opcode for the
SqlEventSource
#241
- Update dependency to Microsoft.Data.SqlClient.SNI v1.1.0 #276
- Correct timeout remarks for async command methods #264
- Improve
SqlBulkCopy
truncation error message #256 - Intellisense tooltip for
SqlCommand
'sCommandTimeout
doesn't describe units #33 - Enable SQL Command text for non-stored procs in EventSource events for .NET Framework 242
- Many test changes to support a public CI
- Added
SqlFileStream
support for .NET Framework withMicrosoft.Data.SqlTypes.SqlFileStream
class introduced. #210 - Added support for Visual Studio Intellisense with XML Documentation. #210
- Synchronized ref definitions with driver classes. #180
- Updated
SNINativeMethodWrapper
to provide the underlying error in the inner exception when we fail to load SNI.dll. #225 - Added .editorconfig file and set formatting rules. #193
- Changes done to handle statistics well and to cleanup
AutoResetEvent
on disconnect. #232
SqlCommand.StatementCompleted
event never being fired #212- Added missing
Authentication
property toSqlConnectionStringBuilder
reference assembly - Reverted API changes in
SqlAuthenticationParameters
which had changed thepublic string Resource
property topublic string[] Scopes
- Fixed issues with large data reading in Unix applications when data is spanned over multiple packets. #171
Initial release. Release Notes uploaded in 1.0.md