2013-05-27 2 views
1

Из-за Linked Server не так просто отправить запрос openrowset. Я подключаюсь к удаленному Sql-серверу напрямую через режим SQLCMD. Но это Ok, используя Query Analyzer. Когда я ставлю код хранимой процедуры я не могу даже спасти его:Вызвать команды sqlcmd в код хранимой процедуры

:Connect x.x.x.x -U sa -P password 
select * 
from openrowset('VFPOLEDB','\\share\db\s_object.dbf';''; 
    '','SELECT * FROM s_object where i_class=21 order by 1') 

Неправильный синтаксис около «:».

+0

SQL Server Management Studio имеет [режим совместимости с sqlcmd] (http://msdn.microsoft.com/en-us/library/ms174187.aspx) , У старого Query Analyzer есть аналогичный режим, но вам нужно поговорить со старым фолком, чтобы узнать, как его включить ... –

ответ

2

SQLCMD режим :connect синтаксис действителен в SSMS и QA когда SQLCMD режим включен, но он всегда будет стороне клиента команда, выполняемая с помощью SSMS или сам QA и никогда не посылала к двигателю. Как ни в коем случае, он не может быть встроен в модуль на стороне сервера, как хранимая процедура. Если вы действительно имеете в виду хранимую процедуру, то неудивительно, что синтаксическая ошибка ...

+0

Прошу прощения за очень долгую задержку после вашего подробного ответа - я искал любое другое решение для внедрения openrowset/openquery через Linked Server. На самом деле вы ответили на мой вопрос, и мне нужно открыть еще один протектор, чтобы найти решение для этого. – revoua