This post has been republished via RSS; it originally appeared at: New blog articles in Microsoft Community Hub.
The SQL Server Native Client (often abbreviated SNAC) OLE DB provider with programmatic identifier SQLNCLI is a legacy Microsoft OLE DB provider for SQL Server that was shipped with SQL Server 2005 (9.x) through SQL Server 2012 (11.x) and then deprecated for use by database application connections. Based on the Support Lifecycle exception SQLNCLI continued to be shipped as a component of SQL Server Database engine up until SQL Server 2019 release, for exclusive use by database engine features like linked servers. In 2018 a next generation of OLE DB provider for SQL Server known by programmatic identifier MSOLEDBSQL was released keeping backwards compatibility with SQLNCLI and adding support for features introduced in newer versions of SQL Server. MSOLEDBSQL is still current and recommended Microsoft OLE DB provider for SQL Server. SQLNCLI was finally removed from SQL Server Database engine with SQL Server 2022 release.
In November 2022 we sent email notifications to all Azure SQL Managed Instance customers using linked server feature announcing that SQLNCLI is also going to be deactivated and retired in Azure SQL Managed Instance. Service update retiring SQLNCLI will be rolled out in all Azure regions during late May and early June this year.
No actions needed for existing linked servers
All existing linked servers with SQLNCLI provider specified will be automatically rerouted to use MSOLEDBSQL provider - you do not have to take any manual actions. Please note that sys.servers system view will keep reporting SQLNCLI as provider for existing linked servers. That’s because the underlying metadata remains unchanged and MSOLEDBSQL provider will be used thanks to dynamic rerouting implemented.
Use MSOLEDBSQL when creating new linked servers
After deactivation of SQLNLCI you should create any new linked servers with MSOLEDBSQL provider specified.
Creating linked server using stored procedure
Pass MSOLEDBSQL as the @Provider parameter value of sp_addlinkedserver stored procedure:
sp_addlinkedserver stored procedure will return error message when ‘SQLNCLI’ is passed as a @Provider parameter value.
Creating linked server using SSMS wizard
Important: If you prefer using SQL Server Management Studio (SSMS) wizard for creation of linked servers, make sure to download and install the latest version of SSMS.
To create new linked server using SQL Server Management Studio (SSMS) wizard, choose Microsoft OLE DB Driver for SQL Server from the Provider dropdown list:
Several providers will be removed from the Provider dropdown list in SQL Server Management Studio (SSMS) wizard for creating linked server on Azure SQL Managed Instance since they are deactivated, to avoid any confusion:
SQL Server Native Client 11.0
SQL Server Native Client 10.0
Microsoft OLE DB Provider for SQL Server
Programmatic identifiers of the corresponding providers will not be listed in the Object Explorer tree of SSMS under Server Objects -> Linked Servers -> Providers anymore:
Next steps
Change any existing transact-SQL (T-SQL) scripts for creation of linked server objects in Azure SQL Managed Instance to provide MSOLEDBSQL as @Provider parameter, instead of SQLNCLI.
Learn more
Microsoft OLE DB provider for SQL Server has a long history. You can read the following articles to learn more about it:
Different generations of Microsoft OLE DB provider for SQL Server
Deprecation of Microsoft SQL Server OLE DB provider (SNAC) in 2011
Support lifecycle exception for SQL engine feature i.e. linked servers