我得到的错误是:
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>
答案 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,请尝试访问作为链接服务器。
请报告结果和/或消息。