当没有定义的链接服务器时,如何删除链接服务器元数据缓存?

How do you remove linked server metadata cache when there are no defined linked servers?

Microsoft 链接服务器实例缓存元数据以加快查询解析速度。当进度数据库驻留在远程服务器上时,这不会正确刷新。

删除链接服务器实例不会删除元数据缓存。

任何新的链接服务器都会继续使用之前链接服务器的旧缓存。这导致了这样的错误...

链接服务器 "ANY NAME" 的 OLE DB 提供程序 "MSDASQL" 提供了不一致的元数据。在执行期间提供了一个在编译时未找到的额外列。

直到有人对远程 Progress DB 进行架构更改后,才出现此问题。特别是从导致上述错误的 table 中删除列。

我使用的是 SQL Standard Edition 2012。因此,请不要询问惰性架构验证。 ;)

备份数据并在 Progress OpenEdge 系统中删除有问题的 table。创建一个新的 table 并加载数据。

现在,问题已经解决了。

有什么不同?现在 SYSPROGRESS.SYSCOLUMNS 中没有 ID 间隙,Microsoft 链接服务器实例缓存元数据中也没有序号问题。