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.
Instead of this:
SELECT * FROM [LINKEDSERVER].[DBNAME].[SCHEMA].[TABLENAME];
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!
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:
- Boost SQL Server Database Performance with In-Memory OLTP
- Essential SQL Server Administration Tips
- SQL Server Fundamentals (SQL Database for Beginners)
- The Philosophy and Fundamentals of Computer Programming
- Introduction to Data Science and SQL Server Machine Learning
- Introduction to Azure SQL Database
- SQL Server 2019: What’s New
- Entity Framework: Getting Started (Ultimate Beginners Guide)
- How to Import and Export Data in SQL Server
- Get Started with SQL Server in 30 Minutes
- A Guide on How to Start and Monetize a Successful Blog
Related SQL Server Administration Articles:
- [DBNETLIB] [ConnectionOpen (SECDoClientHandshake()).] SSL Security Error – How to Resolve
- Essential SQL Sever Administration Tips
- There is not enough space on the disk. (mscorlib)
- How to Patch a Standalone SQL Server Instance
- The SQL Server Browser Service and UDP Port 1434
- The Maximum Number of Concurrent Connections Setting in SQL Server
- Top 10 SQL Server DBA Daily Tasks List
- There is no SQL Server Failover Cluster Available to Join
- Encrypting a SQL Server Database Backup
Rate this article:
Reference: SQLNetHub.com (https://www.sqlnethub.com)
Artemakis Artemiou is a Senior SQL Server Architect, Author, and a 9 Times Microsoft Data Platform MVP (2009-2018). He has over 15 years of experience in the IT industry in various roles. Artemakis is the founder of SQLNetHub and TechHowTos.com. Artemakis is the creator of the well-known software tools Snippets Generator and DBA Security Advisor. Also, he is the author of many eBooks on SQL Server. Artemakis currently serves as the President of the Cyprus .NET User Group (CDNUG) and the International .NET Association Country Leader for Cyprus (INETA).