Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Future of System.Data.SqlClient for 5.0 #30772

Closed
Anipik opened this issue Sep 5, 2019 · 16 comments
Closed

Future of System.Data.SqlClient for 5.0 #30772

Anipik opened this issue Sep 5, 2019 · 16 comments

Comments

@Anipik
Copy link
Contributor

Anipik commented Sep 5, 2019

This issue is mainly to discuss the future of System.Data.SqlClient package.
Currently it is shipped as an out of box package and public surface area of this freezed.

Do we want to keep shipping this package in 5.0.0 or should we just want to remove this from 5.0 onward ?

cc @cheenamalhotra, @Gary-Zh , @David-Engel, @safern @ericstj

@danmoseley
Copy link
Member

There was a thread a while back - one thing to consider is that if we will support this longer than we support 3.x (I assume this is the case because it will ship indefinitely) then we may need to service it after the 3.x branch and servicing infrastructure no longer exists.

@Wraith2
Copy link
Contributor

Wraith2 commented Sep 6, 2019

There is active work to extend the ADO api, for example https://github.com/dotnet/corefx/issues/27682 , and when that moves forward the corefx version of SqlClient should support that api if the only thing it does is ship with obsolete messages/NSE's pointing at M.D.SqlClient

I'd say that it's also worth keeping for bug fixes alone. I've a couple of PR's open on it for bugs and I know there are more in there that will bite people. It's the first version of SqlClient that supports non-windows and having shipped so closely aligned to the framework it'll be in a lot of places that will presumably benefit from those bug fixes.

@ViktorHofer
Copy link
Member

There is active work to extend the ADO api, for example #25297 , and when that moves forward the corefx version of SqlClient should support that api if the only thing it does is ship with obsolete messages/NSE's pointing at M.D.SqlClient

For how long would we add APIs to the legacy package pointing to the new one? This sounds problematic to me.

@jkotas
Copy link
Member

jkotas commented Sep 6, 2019

From https://devblogs.microsoft.com/dotnet/introducing-the-new-microsoftdatasqlclient/ :

Microsoft.Data.SqlClient will be the only place we will be implementing new features going forward. We would encourage you to evaluate your needs and options and choose the right time for you to migrate your application or library from System.Data.SqlClient to Microsoft.Data.SqlClient.

@Wraith2 I would recommend you start submitting your bug fixes and performance improvements to Microsoft.Data.SqlClient. Even if System.Data.SqlClient stays in CoreFX, I expect we will be hesitant to take significant changes because of risk. CoreFX does not have the infrastructure to fully validate significant changes in System.Data.SqlClient as we have learned the hard way in https://github.com/dotnet/corefx/issues/40476

@pawelpabich
Copy link

From https://devblogs.microsoft.com/dotnet/introducing-the-new-microsoftdatasqlclient/ :

It means the development focus has changed. We have no intention of dropping support for System.Data.SqlClient any time soon. It will remain as-is and we will fix important bugs and security issues as they arise. If you have a typical application that doesn’t use any of the newest SQL features, then you will still be well served by a stable and reliable System.Data.SqlClient for many years.

Is there a chance that bug fixes will be applied to both S.D.SqlClient and M.D.SqlClient? M.D.SqlClient only shipped a week or so ago. I hope you understand that switching to the new provider is not a simple task.

@jkotas
Copy link
Member

jkotas commented Sep 6, 2019

Is there a chance that bug fixes will be applied to both S.D.SqlClient and M.D.SqlClient?

The blog post has answer to this too. From https://devblogs.microsoft.com/dotnet/introducing-the-new-microsoftdatasqlclient/ :

We have no intention of dropping support for System.Data.SqlClient any time soon. It will remain as-is and we will fix important bugs and security issues as they arise.

@pawelpabich
Copy link

My comment wasn't precise enough. The blog post talks about fix **important** bugs whereas I am talking about all bugs.

We are running .NET Core 2.2 on Linux in AKS backed by Azure SQL and only a week ago we managed to find a version of S.D.SqlClient (4.7.0-preview6.19303.8) that doesn't crash our app. We've tried more recent versions but they had an unfortunate regression.

In our experience S.D.SqlClient isn't yet rock-solid on (AKS + Linux + Azure) so I hope this explains why I find fix important bugs worrying. Can you share what you understand by important bugs here? That might help.

@jkotas
Copy link
Member

jkotas commented Sep 7, 2019

We've tried more recent versions but they had an unfortunate regression.

Have you tried the most recent nightly version with a fix for #30645? Does it work on AKS + Linux + Azure?

The important bugs are the same type of bugs as what we are fixing in servicing releases: key scenario not working (ASK + Linux + Azure falls into this category), security issues, reliability issues (crash, hang, data loss).

@Wraith2
Copy link
Contributor

Wraith2 commented Sep 9, 2019

The important bugs are the same type of bugs as what we are fixing in servicing releases: key scenario not working

Like mars on non-windows being unstable (dotnet/corefx#38271) and command cancellation just not working (dotnet/corefx#38266) which are bug fixes have been open for 3 months, easily in time for 3.0 and yet remain unmerged.

There are politics at work with SqlClient and if support/attention is reduced further i can't see even important bugs being patched. It'll be less trouble to take the honest route and just mark it as deprecated then point users at the Microsoft.Data.SqlClient

@pawelpabich
Copy link

Have you tried the most recent nightly version with a fix for #30645? Does it work on AKS + Linux + Azure?

We've spent quite a bit of time finding the current working for us version so at this stage we will wait for 4.7 to RTM with .NET Core 3.0.

@jkotas
Copy link
Member

jkotas commented Sep 9, 2019

command cancellation not working

This does not qualify as important bug fix for me. We would not take this fix in servicing release either. This is the kind of fix that I expect to be made in Microsoft.Data.SqlClient only.

@Wraith2
Copy link
Contributor

Wraith2 commented Sep 9, 2019

It wasn't intended for a servicing release, as i said it's been sat open for 3 months which was more than enough time to get it included in the standard build before 3.0 cutoff. It's just that no-one was interested.

If it's going to get even harder to make any change to SqlClient than it already is then stop pretending to support it in corefx and mark it as dead, Just tell people who find bugs to move to M.D.SqlClient and don't mess consumers around by exposing whatever disconnect is going on internally.

@jkotas
Copy link
Member

jkotas commented Sep 9, 2019

@Wraith2 I have submitted dotnet/corefx#40946 to make this clear.

@jkotas
Copy link
Member

jkotas commented Jan 27, 2020

one thing to consider is that if we will support this longer than we support 3.x (I assume this is the case because it will ship indefinitely) then we may need to service it after the 3.x branch and servicing infrastructure no longer exists.

There are several other packages that are shipping from 3.x branch, that are not building for .NET 5 and that may be supported "indefinitely". So this is not introducing a new problem.

@ericstj
Copy link
Member

ericstj commented Jan 27, 2020

If that became a burden we could even change the build workflow to build and test a smaller part of the product.

@msftgits msftgits transferred this issue from dotnet/corefx Feb 1, 2020
@msftgits msftgits added this to the 5.0 milestone Feb 1, 2020
@jkotas
Copy link
Member

jkotas commented Feb 7, 2020

Fixed by #2275

@jkotas jkotas closed this as completed Feb 7, 2020
@ghost ghost locked as resolved and limited conversation to collaborators Dec 12, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

8 participants