Запрос связанного сервера работает, но ОТКРЫТИЕ того же самого приводит к ошибке «Не удалось найти сервер« СЕРВЕР »в sys.servers - PullRequest
1 голос
/ 04 мая 2019

В поисках указателей, как решить эту проблему.

У меня есть связанный сервер настройки. Этот запрос работает в SSMS, я получаю строки обратно.

SELECT tbl.[Col1]
      ,tbl.[CoL2]
  FROM [LINKEDSERVER].[CATALOG].[SCHEMA].[TABLENAME] tbl

Но попытка сделать то же самое в SSMS с OPENQUERY не удается

SELECT [Col1]
FROM OPENQUERY([LINKEDSERVER],
'SELECT tbl.[Col1]
      ,tbl.[CoL2]
  FROM [LINKEDSERVER].[CATALOG].[SCHEMA].[TABLENAME] tbl'
) As Whatever

Сообщения следующие:

Поставщик OLE DB "SQLNCLI11" для связанного сервера "SERVER" возвращен сообщение «Отложенная подготовка не может быть завершена». Msg 8180, уровень 16, состояние 1, строка 1 Заявление (я) не может быть подготовлено. Msg 7202, Уровень 11, состояние 2, строка 1 Не удалось найти сервер 'SERVER' в sys.servers. Убедитесь, что указано правильное имя сервера. Если необходимо выполнить хранимую процедуру sp_addlinkedserver, чтобы добавить сервер для sys.servers.

Имя сервера SERVER появляется, когда я проверяю select * from sys.servers ОТКРЫТИЕ отсюда по отношению к другим связанным серверам прошло успешно.

Ответы [ 2 ]

1 голос
/ 06 мая 2019

Потому что, когда вы используете OPENQUERY, вы отправляете запрос, который хотите запустить на удаленном сервере.Ошибка генерируется удаленным сервером.Уберите имя связанного сервера в запросе.Что-то в этом роде.

SELECT [Col1]
FROM OPENQUERY([LINKEDSERVER],
'SELECT tbl.[Col1]
      ,tbl.[CoL2]
  FROM [CATALOG].[SCHEMA].[TABLENAME] tbl'
) As Whatever
0 голосов
/ 05 мая 2019

Это предложение используется с другим сервером, но все в порядке, попробуйте следующее:

  1. EXEC SP_SERVEROPTION 'SERVER \ INSTANCIA', 'DATA ACCESS', TRUE
  2. SELECT * FROM OPENQUERY(YOURSERVER, «SELECT * FROM TABLE»).

И все готово.:)

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