|  | 
|  | 1 | +# Release Notes | 
|  | 2 | + | 
|  | 3 | +## Microsoft.Data.SqlClient 2.0.0-preview2.20084.1 released 24 March 2020 | 
|  | 4 | + | 
|  | 5 | +This update brings the below changes over the previous release: | 
|  | 6 | + | 
|  | 7 | +### Added | 
|  | 8 | +- Added support for capturing EventSource traces in .NET Framework, .NET Core, and .NET Standard applications [#399](https://github.com/dotnet/SqlClient/pull/399) [#461](https://github.com/dotnet/SqlClient/pull/461) [#479](https://github.com/dotnet/SqlClient/pull/479) [#483](https://github.com/dotnet/SqlClient/pull/483) [#484](https://github.com/dotnet/SqlClient/pull/484) | 
|  | 9 | +- Added support for Cross-platform TCP Keep Alive applicable to .NET Core 3.1+ applications [#395](https://github.com/dotnet/SqlClient/pull/395) | 
|  | 10 | +- Added support for enabling Managed networking implementation on Windows applicable to .NET Core and .NET Standard applications [#477](https://github.com/dotnet/SqlClient/pull/477) | 
|  | 11 | +- Added `RowsCopied` property in `SqlBulkCopy` to expose count of copied rows [#409](https://github.com/dotnet/SqlClient/pull/409) | 
|  | 12 | +- Added "NeutralResourcesLanguage" attribute for .NET Framework assembly [#433](https://github.com/dotnet/SqlClient/pull/433) | 
|  | 13 | +- Added caching for invariant culture check result [#376](https://github.com/dotnet/SqlClient/pull/376) | 
|  | 14 | +- Added cached `SqlReferenceCollection.FindLiveReaderContext` objects [#380](https://github.com/dotnet/SqlClient/pull/380) | 
|  | 15 | + | 
|  | 16 | +### Fixed | 
|  | 17 | +- Fixed Access Token behavior in connection pool to perform string comparison [#443](https://github.com/dotnet/SqlClient/pull/443) | 
|  | 18 | +- Fixed concurrent connection speed issues when connecting with Azure Active Directory Authentication modes in .NET Core [#466](https://github.com/dotnet/SqlClient/pull/466) | 
|  | 19 | +- Fixed issues with `Password` persistence in Connection String [#453](https://github.com/dotnet/SqlClient/pull/453) | 
|  | 20 | + | 
|  | 21 | +### Changes | 
|  | 22 | +- Updated all driver assemblies to be CLS Compliant [#396](https://github.com/dotnet/SqlClient/pull/396) | 
|  | 23 | +- Updated Bulk Copy error messages to also include Column, Row and non-encrypted Data information [#437](https://github.com/dotnet/SqlClient/pull/437) | 
|  | 24 | +- Updated error messages for "Always Encrypted - Secure Enclaves" to handle 'Attestation Protocol' and fixed typos [#421](https://github.com/dotnet/SqlClient/pull/421) [#397](https://github.com/dotnet/SqlClient/pull/397) | 
|  | 25 | +- Removed sync over async in `SNINpHandle.EnableSsl` [#474](https://github.com/dotnet/SqlClient/pull/474) | 
|  | 26 | +- Changed non-generic `ArrayList` to `List<T>` in `SqlBulkCopy` [#457](https://github.com/dotnet/SqlClient/pull/457) | 
|  | 27 | +- Multiple performance improvements [#377](https://github.com/dotnet/SqlClient/pull/377) [#378](https://github.com/dotnet/SqlClient/pull/378) [#379](https://github.com/dotnet/SqlClient/pull/379)  | 
|  | 28 | + | 
|  | 29 | +### Breaking Changes | 
|  | 30 | +- 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](https://github.com/dotnet/SqlClient/pull/391) | 
|  | 31 | +- `SqlDataReader.GetSchemaTable()` now returns empty `DataTable` instead of returning `null` [#419](https://github.com/dotnet/SqlClient/pull/419) | 
|  | 32 | + | 
|  | 33 | + | 
|  | 34 | +### Introducing EventSource tracing support | 
|  | 35 | +This release introduces support for capturing EventSource trace logs for debugging applications. In order to capture these traces, client applications must listen to events from SqlClient's EventSource implementation: | 
|  | 36 | + | 
|  | 37 | +"Microsoft.Data.SqlClient.EventSource" | 
|  | 38 | + | 
|  | 39 | +Supported Event Keywords are: | 
|  | 40 | + | 
|  | 41 | +| Keyword Name | Value | Description | | 
|  | 42 | +| ------------ | ----- | ----------- | | 
|  | 43 | +| ExecutionTrace | 1 | Turns on capturing Start/Stop events before and after command execution. | | 
|  | 44 | +| Trace | 2 | Turns on capturing basic application flow trace events. | | 
|  | 45 | +| Scope | 4 | Turns on capturing enter and exit events | | 
|  | 46 | +| NotificationTrace | 8 | Turns on capturing `SqlNotification` trace events | | 
|  | 47 | +| NotificationScope | 16 | Turns on capturing `SqlNotification` scope enter and exit events | | 
|  | 48 | +| PoolerTrace | 32 | Turns on capturing connection pooling flow trace events. | | 
|  | 49 | +| PoolerScope | 64 | Turns on capturing connection pooling scope trace events. | | 
|  | 50 | +| AdvancedTrace | 128 | Turns on capturing advanced flow trace events. | | 
|  | 51 | +| AdvancedTraceBin  | 256 | Turns on capturing advanced flow trace events with additional information. | | 
|  | 52 | +| CorrelationTrace | 512 | Turns on capturing correlation flow trace events. | | 
|  | 53 | +| StateDump | 1024 | Turns on capturing full state dump of `SqlConnection` | | 
|  | 54 | +| SNITrace | 2048 | Turns on capturing flow trace events from Managed Networking implementation (only applicable in .NET Core) | | 
|  | 55 | +| SNIScope | 4096 | Turns on capturing scope events from Managed Networking implementation (only applicable in .NET Core) | | 
|  | 56 | +||| | 
|  | 57 | + | 
|  | 58 | +### Enabling Managed networking on Windows | 
|  | 59 | +This release introduces a new AppContext switch "Microsoft.Data.SqlClient.UseManagedNetworkingOnWindows" that enables the use of Managed SNI on Windows for testing and debugging purposes. This switch will toggle the driver's behavior to use Managed SNI in .NET Core 2.1+ and .NET Standard 2.0+ projects on Windows. | 
|  | 60 | + | 
|  | 61 | +To set the switch from app startup, specify: | 
|  | 62 | + | 
|  | 63 | +```cs | 
|  | 64 | +AppContext.SetSwitch("Microsoft.Data.SqlClient.UseManagedNetworkingOnWindows", true); | 
|  | 65 | +``` | 
|  | 66 | + | 
|  | 67 | +> [NOTE] **Known differences when compared to Native SNI.dll**: Managed SNI does not support non-domain Windows Authentication. | 
|  | 68 | +
 | 
|  | 69 | + | 
|  | 70 | +## Target Platform Support | 
|  | 71 | + | 
|  | 72 | +- .NET Framework 4.6+ | 
|  | 73 | +- .NET Core 2.1+ (Windows x86, Windows x64, Linux, macOS) | 
|  | 74 | +- .NET Standard 2.0+ (Windows x86, Windows x64, Linux, macOS) | 
|  | 75 | + | 
|  | 76 | +### Dependencies | 
|  | 77 | + | 
|  | 78 | +#### .NET Framework | 
|  | 79 | + | 
|  | 80 | +- Microsoft.Data.SqlClient.SNI 1.1.0+ | 
|  | 81 | +- Microsoft.Identity.Client 3.0.8 | 
|  | 82 | +- Microsoft.IdentityModel.Protocols.OpenIdConnect 5.6.0 | 
|  | 83 | +- Microsoft.IdentityModel.JsonWebTokens 5.6.0 | 
|  | 84 | + | 
|  | 85 | +#### .NET Core 2.1 | 
|  | 86 | + | 
|  | 87 | +- runtime.native.System.Data.SqlClient.sni 4.4.0  | 
|  | 88 | +- Microsoft.Win32.Registry 4.7.0  | 
|  | 89 | +- System.Security.Principal.Windows 4.7.0  | 
|  | 90 | +- System.Text.Encoding.CodePages 4.7.0  | 
|  | 91 | +- System.Diagnostics.DiagnosticSource 4.7.0  | 
|  | 92 | +- System.Configuration.ConfigurationManager 4.7.0  | 
|  | 93 | +- System.Runtime.Caching 4.7.0  | 
|  | 94 | +- Microsoft.Identity.Client 4.7.1 | 
|  | 95 | +- Microsoft.IdentityModel.Protocols.OpenIdConnect 5.6.0 | 
|  | 96 | +- Microsoft.IdentityModel.JsonWebTokens 5.6.0 | 
|  | 97 | + | 
|  | 98 | +#### .NET Core 3.1 | 
|  | 99 | + | 
|  | 100 | +- runtime.native.System.Data.SqlClient.sni 4.4.0  | 
|  | 101 | +- Microsoft.Win32.Registry 4.7.0  | 
|  | 102 | +- System.Security.Principal.Windows 4.7.0  | 
|  | 103 | +- System.Text.Encoding.CodePages 4.7.0  | 
|  | 104 | +- System.Diagnostics.DiagnosticSource 4.7.0  | 
|  | 105 | +- System.Configuration.ConfigurationManager 4.7.0  | 
|  | 106 | +- System.Runtime.Caching 4.7.0  | 
|  | 107 | +- Microsoft.Identity.Client 4.7.1 | 
|  | 108 | +- Microsoft.IdentityModel.Protocols.OpenIdConnect 5.6.0 | 
|  | 109 | +- Microsoft.IdentityModel.JsonWebTokens 5.6.0 | 
|  | 110 | + | 
|  | 111 | +#### .NET Standard | 
|  | 112 | + | 
|  | 113 | +- runtime.native.System.Data.SqlClient.sni 4.4.0 | 
|  | 114 | +- Microsoft.Win32.Registry 4.7.0 | 
|  | 115 | +- System.Buffers 4.5.0 | 
|  | 116 | +- System.Diagnostics.DiagnosticSource 4.7.0 | 
|  | 117 | +- System.Memory 4.5.3 | 
|  | 118 | +- System.Security.Principal.Windows 4.7.0 | 
|  | 119 | +- System.Text.Encoding.CodePages 4.7.0 | 
|  | 120 | +- System.Configuration.ConfigurationManager 4.7.0 | 
|  | 121 | +- Microsoft.Identity.Client 4.7.1 | 
|  | 122 | +- Microsoft.IdentityModel.Protocols.OpenIdConnect 5.6.0 | 
|  | 123 | +- Microsoft.IdentityModel.JsonWebTokens 5.6.0 | 
0 commit comments