链接服务器的OLE DB提供程序为列提供了不一致的元数据

时间:2013-10-24 09:52:45

标签: sql sql-server

我得到的错误是:

The column "EngDescAlt" (compile-time ordinal 2) of object "select * from MstBusiness" was reported to have a "DBCOLUMNFLAGS_ISLONG" of 128 at compile time and 0 at run time.

我在几个表中的各个列中得到相同的错误,每次唯一的区别是列名和表名,我无法弄清楚如何修复它。有什么想法吗?

使用OpenQuery的方式并不正常,因为我已经在使用它。

感谢任何帮助。

SELECT     Z_ID AS BusinessID, EngDescAlt AS Description
FROM         OPENQUERY(<LinkedServer>, 'select * from <Tablename>') AS U2_<Tablename>

2 个答案:

答案 0 :(得分:2)

由于某种原因,在服务器上重新启动MS SQL SERVICES修复了问题。它似乎与修复的问题有关,需要重新启动才能实现。对不起,我不能更具体地解决问题的原因。

答案 1 :(得分:1)

我刚注意到您编辑了您的问题,发布了您的查询 调试的一个好方法是测试朝向目标的小步骤......这样您就可以确切地看到哪个步骤引入了错误。

首先,您可以直接连接到目标服务器,在没有OPENQUERY的情况下测试您的查询吗? 如果是这样,那么尝试从SSMS(SQL Server Management Studio)中进行简单选择:

SELECT Z_ID AS BusinessID, EngDescAlt AS Description  
FROM <Tablename>

如果有效,请尝试:

SELECT Z_ID AS BusinessID, EngDescAlt AS Description 
FROM (select * from <Tablename>) AS U2_<Tablename>

尝试在SSMS中运行openquery,在直接连接到该目标服务器(而不是链接服务器)的查询窗口中运行:

SELECT Z_ID AS BusinessID, EngDescAlt AS Description
FROM OPENQUERY(<LinkedServer>, 'select * from <Tablename>') AS U2_<Tablename>

最后,一个问题:你在哪个环境中运行OPENQUERY?它是否来自SSMS内的另一台服务器/您的工作站?或者是来自其他环境/语言/工具?如果您还没有在SSMS中执行openquery,请尝试访问作为链接服务器。

请报告结果和/或消息。

相关问题