The OLE DB provider “SQLNCLI11” for linked server “…” supplied inconsistent metadata for a column… – How to Resolve

This post explains the error message you might get in SQL Server: The OLE DB provider “SQLNCLI11” for linked server “[…]” supplied inconsistent metadata for a column. The column “[…]” (compile-time ordinal 1) of object “[query…]” was reported to have a Incomplete schema-error logic.

You might get the above error message, when you are trying to connect to a SQL Server instance, from another server, using SQL Server Native Client 11.0.

SQL Server 2012 Native Client (yes, that is SQL Server Native Client 11.0 – download here), is a stand-alone data access application programming interface (API), used for both OLE DB and ODBC (learn more).

SQL Server Native Client, even deprecated (we will talk more about this later), it still heavily used, mostly for integrating different systems/applications with SQL Server, or even integrate different SQL Server instances via linked servers.

So, if you are in a situation where you got the above message, don’t worry because there is a logical explanation about it.

Read on to learn more!

 

The first thing to try

The first thing to try and do, hoping that it might resolve the issue, is to use OPENQUERY in case you are using the four-part naming approach.

 

Example:

Instead of this:

SELECT * FROM [LINKEDSERVER].[DBNAME].[SCHEMA].[TABLENAME];

 

Try this:

SELECT * FROM OPENQUERY([LINKEDSERVER], 'SELECT * FROM [DBNAME].[SCHEMA].[TABLENAME]');

 

If the above solved your problem, that’s great, you are in luck.

 

Another thing to try

If the previous step didn’t help, another thing to try, is to make sure that you are using updated connectivity drivers. For example, if you are using SQL Server Native Client 10.0, you can try using SQL Server Native Client 11.0 (even though, you should not be using SQL Server Native Client on new development work, as I explain further in this article).

 

A server reboot maybe?

Something else you can try, if you have the luxury and the required approved downtime of course, is to reboot the server onto which you are trying to use the SQL Server Native Client (not the database server itself!).

 

Why do you get the “…supplied inconsistent metadata for a column..” error?

If all of the above cannot help, then it’s time to further discuss this in order to better evaluate the situation.

Therefore, there are 2 things that you need to take into consideration when using SQL Server Native Client:

  • Fact 1: As per Microsoft’s official documentation, SQL Server Native Client (SQLNCLI) remains deprecated and you should not use it in new development work. Instead, Microsoft advises that you should use the new Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL), since it is the driver that will be updated with the most recent server features.

 

  • Fact 2: As per Microsoft’s “Support Policies for SQL Server Native Client” document, SQL Server Native Client 11.0 supports connections to, SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 (11.x), SQL Server 2014 (12.x), and Azure SQL Database.

 


Learn How to Properly Manage the Cool Stuff in SQL Server!

Check our 6-hour online course on Udemy titled “Essential SQL Server Administration Tips” (special limited-time discount included in link).

Learn essential hands-on SQL Server Administration tips on SQL Server maintenance, security, performance, integration, error handling and more. Many live demonstrations and downloadable resources included!

Essential SQL Server Administration Tips - Online Course with Live Demonstrations and Hands-on Guides
SQL Server Administration Tips (lifetime access – learn more).

Enroll Now with Discount!


How to resolve the issue

The above 2 facts already shed enough light on the error message that you get.

So, if for example you are using SQL Server 2012 Native Client (SQLNCLI 11.0), for accessing a SQL Server instance that is later than SQL Server 2014 (i.e. SQL Server 2017 or 2019), then you are most probably getting the “…supplied inconsistent metadata for a column..” error message, due to the fact that SQLNCLI 11.0 supports connecting only up to SQL Server 2014.

The solution for the issue, is to do what Microsoft advises, that is to use the new Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL).

However, before start using the Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL), you will need to check and handle any required changes (if applicable), you might need to perform on the application’s side due to the driver change.

 

Important Note: There is another type of older Microsoft OLE DB Driver for SQL Server (SQLOLEDB). This is also deprecated and it is not recommended to use either for new development work.

 

Featured Online Courses:

 

Related SQL Server Administration Articles:

 

Rate this article: 1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 5.00 out of 5)

Loading...

Reference: SQLNetHub.com (https://www.sqlnethub.com)

© SQLNetHub