2015-09-16 2 views
1

Следующий запрос работает нормально в SQL Server 2008 R2SQL Server OpenQuery для Exec команды

select * 
from openquery(LinkedServerName, 'exec databaseName.dbo.SP_GET_INFO'); 

Я пытаюсь преобразовать его с помощью EXEC команду, но не повезло.

Например:

exec ('call databaseName.dbo.SP_GET_INFO') at LinkedServerName 

Всегда получаю ошибку синтаксиса с этим сообщением:

Could not execute statement on remote server 'LinkedServerName'

Спасибо.

+1

'Exec ('Exec databaseName.dbo.SP_GET_INFO') в LinkedServerName' – lad2025

+0

Спасибо @ lad2025, но I'm получаю эту ошибку: OLE DB провайдер "STREAM" для связанного сервера "(NULL)" возвращенное сообщение« работа с многоступенчатыми ошибками OLE DB. Проверьте значения состояния OLE DB, если они доступны. Работа не была выполнена ». – iperezmel78

+0

Сохраняет ли ваша хранимая процедура XML/TEXT/изображение или так далее? – lad2025

ответ

0

Благодаря @ lad2025 за большую помощь.

Используя следующий сценарий будет работать:

exec ('databaseName.dbo.SP_GET_INFO') at LinkedServerName 

Первый раз, когда я тестировал код он не работал из-за водителя, я использовал для создания связанного сервера. Я использовал «поставщик Microsoft OLE DB для драйверов ODBC». С этим я получил ошибку:

OLE DB provider "STREAM" for linked server "(null)" returned message ...

Причина была потому, что в хранимой процедуре я избранная на колонке NTEXT, которая имеет нулевые значения.

Итак, я поменял драйвер на «Microsoft OLE DB Provider для SQL Server», и скрипт работал нормально.

Надеюсь, это поможет кому-то еще.

Смежные вопросы