Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 链接服务器的OLE DB提供程序为列提供了不一致的元数据_Sql_Sql Server - Fatal编程技术网

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

Sql 链接服务器的OLE DB提供程序为列提供了不一致的元数据,sql,sql-server,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. 我在两个表中的不同列中得到相同的错误,每次唯一的区别是列名和表名,我不知道如何修复它。有什么想法吗 顺便说一句,使用OpenQue

我得到的错误是:

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>

我刚刚注意到你编辑了你的问题,发布了你的查询。 调试的一个很好的方法是测试实现目标的小步骤。。。因此,您可以确切地看到哪一步引入了错误

首先,您是否可以直接连接到目标服务器,在不使用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,也可以尝试以链接服务器的身份访问


请报告结果和/或消息

由于某种原因,在服务器上重新启动MS SQL SERVICES修复了该问题。这似乎与一个已修复的问题有关,需要重新启动才能实施。很抱歉,我无法更具体地说明是什么解决了这个问题。

这里的编译时和运行时是什么意思?什么环境正在执行OpenQuery?您能否从ManagementStudio和OpenQuery中执行以下操作,以及在每种情况下都会得到什么:选择*from INFORMATION\u SCHEMA.COLUMNS,其中TABLE\u NAME='MstBusiness'和COLUMN\u NAME='EngDescAlt'我不确切知道编译时和运行时是什么。Im使用SSMS 2012。是的,我可以,但没有返回任何信息。[oops..4点已更正]1如果您将查询添加到问题中,可能会有所帮助。。。虽然你可能想把。而不是你的实际价值。2当您说在SSMS 2012中运行查询时未获得任何信息时,您的意思是零行吗?3在执行查询时,能否在目标服务器上的SQL Profiler中运行跟踪?它是否显示任何正在执行的查询?4如果指定databasename,在我之前给出的查询中,您会得到什么?:选择*FROM.INFORMATION\u SCHEMA.COLUMNS,其中TABLE\u NAME='MstBusiness'和COLUMN\u NAME='EngDescAlt'2是,没有返回数据。我不知道那是什么,也不知道怎么做对不起,我对这一切都很陌生。4我也没有返回任何行。Re'3我不知道SQL Server 2012中是否完全相同,但请尝试:单击开始、所有程序、Microsoft SQL Server 2012、性能工具,然后单击SQL Server Profiler。我建议您在google SQL Server Profiler上搜索步骤,但这可能就足够了:单击文件和新跟踪,连接到服务器,然后在跟踪属性窗口上选择选项卡事件选择。查找并选中“显示所有列”复选框。单击“列过滤器”按钮。在左侧单击DatabaseName;在右侧展开Like,输入MstBusiness(&T)。单击“确定”。单击Run。它已全部在SSMS中。谢谢,我试一下:那样的话,你能慷慨地回答我的问题吗?将其分为几个步骤(例如,首先尝试直接连接到目标服务器的查询,然后尝试作为链接服务器访问)是否有助于确定问题所在?