All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog
- 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