我正在使用在SQL Server 2005上运行良好的Openquey,我有1台服务器,即SQL Server 2008,这对它不起作用。

如果我运行以下命令:

SELECT *
FROM OPENQUERY([Manchester],
      '[Manchester].[PilotWebApp].[DBO].rsp_HandheldPerformance ''10/01/2009'',
      ''10/10/2009''')


我收到此错误:

Cannot process the object "[Manchester].[PilotWebApp].[DBO].rsp_HandheldPerformance '10/01/2009', '10/10/2009'".
The OLE DB provider "SQLNCLI" for linked server "Manchester" indicates that either the object has no columns or the current user does not have permissions on that object.


如果我只是跑步:

[Manchester].[PilotWebApp].[DBO].rsp_HandheldPerformance '10/01/2009', '10/10/2009'


它工作正常。 2008年发生了什么变化?

它所做的是从openquery获取数据并将其插入到我的临时表中:

INSERT #TempHandheldPerformance SELECT * FROM OPENQUERY([Manchester], '[Manchester].PilotWebApp.DBO.rsp_HandheldPerformance ''10/01/2009'', ''10/10/2009''')

最佳答案

即使是2009年的问题,我在2012年也遇到了同样的问题!!而且很难找到答案。...无论如何,在执行SP之前,只是使用SET NOCOUNT ON

如果曼彻斯特是LinkedServer,则SET NOCOUNT ON的示例代码应为

SELECT *
FROM OPENQUERY([Manchester],
      'SET NOCOUNT ON; EXEC [PilotWebApp].[DBO].rsp_HandheldPerformance ''10/01/2009'',
      ''10/10/2009''')


并填写临时表

SELECT *
INTO #temptable
FROM OPENQUERY([Manchester],
          'SET NOCOUNT ON; EXEC [PilotWebApp].[DBO].rsp_HandheldPerformance ''10/01/2009'',
          ''10/10/2009''')


https://stackoverflow.com/a/2247200/181766

07-26 03:13