我正在使用在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