2

Microsoft Linked Server instances cache metadata for faster query resolution. This does not get properly refreshed when the Progress Database resides on a remote server.

Dropping the Linked Server instance does not remove the metadata cache.

Any new linked server continues to use that old cache from the previous linked server. This is causing an error like this...

The OLE DB provider "MSDASQL" for linked server "ANY NAME" supplied inconsistent metadata. An extra column was supplied during execution that was not found at compile time.

This problem did not happen until someone made a schema change on the remote Progress DB. Specifically dropping columns from the table that causes the error above.

I'm using SQL Standard Edition 2012. So, don't ask about lazy schema validation. ;)

kalaolani
  • 323
  • 1
  • 16
  • Since the schema change in the remote Progress OpenEdge DB seems to be the only change since this happened, I looked at the metadata on the Progress OpenEdge side. What I found were ID gaps in SYSPROGRESS.SYSCOLUMNS metadata for the table in question. So, I believe that dropping and recreating the table in the Progress OpenEdge DB will fix the problem. On recreation, I expect no gaps in the ID. – kalaolani Feb 14 '18 at 01:00
  • This is my guess at this point. Since I cannot reproduce this issue using non-MS software to access the Progress OpenEdge DB in question via ODBC from the same system. – kalaolani Feb 14 '18 at 01:01
  • I will re-word my question, if my test proves that I'm correct. – kalaolani Feb 14 '18 at 01:02

1 Answers1

1

Backup the data and drop the offending table in the Progress OpenEdge system. Create a new table and load the data.

Now, the issues is resolved.

What's different? There are now no ID gaps in SYSPROGRESS.SYSCOLUMNS or ordinal issues in the Microsoft linked server instances cache metadata.

kalaolani
  • 323
  • 1
  • 16