SQL Server - ОТКРЫТИЕ - PullRequest
       13

SQL Server - ОТКРЫТИЕ

4 голосов
/ 26 октября 2009

Я использую Openquey, который отлично работал на SQL Server 2005, у меня есть 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''')

Ответы [ 4 ]

8 голосов
/ 30 января 2012

Даже вопрос из 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

1 голос
/ 29 июля 2015

Попробуйте добавить SET FMTONLY OFF; SET NOCOUNT ON; в свой запрос

SELECT * INTO #temptable FROM OPENQUERY([Manchester], 'SET FMTONLY OFF; SET NOCOUNT ON; EXEC [Manchester].    [PilotWebApp].[DBO].rsp_HandheldPerformance ''10/01/2009'', ''10/10/2009''')
1 голос
/ 27 октября 2009

Проверьте и убедитесь, что в удаленном блоке нет связанного сервера с именем [Manchester]; Ваш синтаксис может быть интерпретирован как:

Подключитесь с локального сервера к связанному серверу с именем Manchester, а затем выполните сохраненный процесс на другом связанном сервере с именем Manchester.

Stu

0 голосов
/ 26 октября 2009

Убедитесь, что связанный сервер использует те же учетные данные, что и вы. Вы можете найти их в Свойствах связанного сервера, затем Параметры безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...