Добрый день
Есть интересная задача. Надо в БП по событию подключится к стороннему серверу MS-SQL и выполнить хранимую процедуру с двумя параметрами, которая вернет нам таблицу данных. Далее эту таблицу данных сохранить в кастомном разделе в системе и настроить связи с другими объектами.
Затык именно в подключении к стороннему серверу БД и вызове процедуры.
В MSSMS это выглядит как:
EXECUTE [dbo].[GetDataForCRM] @nomer,@date
Нравится
Добрый день!
Пробовали ли настраивать линкованные серверы? Если получится подключить сторонний сервер, то можно будет отправлять на него sql-запросы.
Добрый день!
Пробовали ли настраивать линкованные серверы? Если получится подключить сторонний сервер, то можно будет отправлять на него sql-запросы.
Спасибо, помогло, частично. в MSSMS могу вызвать как
EXEC [LinkedServer].[LinkedDB].[dbo].[GetDataForCRM] @nomer,@date
Как передать что надо вызывать на связанном сервере? Если я указываю полный путь процедуры, а не только имя, то получаю
EXEC [dbo].[[LinkedServer].[LinkedDB].[dbo].[GetDataForCRM]] @nomer,@date
Алексей, функцию на связанном сервере запускают специальным образом, через OPENQUERY или sp_executesql, см. примеры тут.
SELECT SomeField FROM OPENQUERY([YOURSERVER], 'SELECT * FROM [SOMEDB].dbo.fn_SomeRemoteFunction(NULL)') tst
Зверев Александр,
т.е. через
StoredProcedure getDataForCRM = new StoredProcedure(UserConnection, "GetDataForCRM") .WithParameter("nomer", numberDoc) .WithParameter("date", dateDoc) as StoredProcedure;
не выйдет получить данные?
Так запускается хранимка на локальном сервере БД, а вопрос был о запуске на другом, связанном.
Вы можете сделать свою функцию на локальном сервере, которая, в свою очередь, запустит таким образом функцию на связанном.
Также не очень понятно, Вам нужно хранимую процедуру или таки функцию? Таблицу с результатами может возвращать последняя.