Skip to content

Frequently Asked Questions

Cheena Malhotra edited this page Sep 11, 2026 · 16 revisions

Frequently asked questions

Home / Solve a problem

Which SqlClient should new development use?

Use Microsoft.Data.SqlClient for the actively developed SQL Server .NET provider. New SQL Server and Azure SQL features are implemented there. See Getting started. This does not mean the .NET Framework in-box provider disappears when MDS is installed.

Is MDS open source, and is it a rewrite?

It is open source in this repository. It evolved from the existing providers rather than starting as a rewrite. The current repository uses a unified implementation project with platform-specific code; older descriptions of two separate source trees are historical. See the Contributor guide.

How are updates delivered?

MDS is an application package. Ship its updates with the application, including on .NET Framework; do not expect Windows Update to replace that package. Distinguish the SDS NuGet package from the .NET Framework in-box provider when evaluating legacy support.

Is migrating just changing the using statement?

Not always. Audit provider-specific type boundaries, encryption defaults, authentication packages, deployment, and data behavior. Follow the five-page migration guide.

Can SDS and MDS coexist?

They can be present in one process, but their concrete provider types and connection pools are distinct. A staged migration must account for library boundaries, exception handlers, configuration, and possible type-name collisions. See Code and APIs.

Why does a previously working connection fail certificate validation?

The encryption default became stronger. A trust or hostname problem that was previously hidden may now prevent connection. Fix certificate configuration; see Security and authentication.

Does every Azure SQL application need the Azure extension?

No. In 7.x, it supplies driver-provided Entra authentication modes. It is not required merely because the endpoint is Azure SQL, or merely to use application-supplied access tokens. See Authentication.

Does .NET Standard support mean my old runtime can run this package?

No. The compatibility surface restored in 6.1 is not a runnable implementation. Check the consuming application's runtime and the selected package's assets in Releases and support.

Why do I get PlatformNotSupportedException?

Check the exact operation and supported runtime/OS, then confirm the application loaded the correct runtime implementation and dependencies. Loading a DLL manually can bypass NuGet's asset selection. This is a possible cause, not a diagnosis of every platform exception. See Deployment.

Are all features available on every platform?

No. A unified source project does not remove OS services, runtime constraints, or native dependencies. Review your actual feature/runtime/OS combination rather than assuming complete parity. See Deployment.

Should I turn on new pooling or async switches during migration?

Keep the initial migration controlled. First validate default behavior; evaluate optional performance changes separately with a representative workload and release-specific guidance. See Runtime and compatibility.

Where are fixes, plans, and support dates?

Release notes describe shipped changes, Roadmap describes direction, and the official lifecycle describes support. A milestone date is not a delivery commitment.

Where do I find documentation or request a change?

Start with the ADO.NET driver documentation hub, use Feature guides for task-specific articles, and consult the API reference for member details. Submit bugs and feature requests through issue templates; report vulnerabilities privately through MSRC.

Sources: repository overview, official porting guide, and the detailed pages linked above.

Clone this wiki locally