Веб-сервис от SQL - PullRequest
       37

Веб-сервис от SQL

3 голосов
/ 30 декабря 2008

Можно ли вызвать удаленный веб-сервис из хранимой процедуры и использовать значения, которые были восстановлены?

Ответы [ 5 ]

4 голосов
/ 30 декабря 2008

Если вы используете SQL 2005/2008, вы можете сделать это с помощью хранимой процедуры CLR, если у вас есть возможность установить и запустить ее. Для получения дополнительной информации:

http://msdn.microsoft.com/en-us/library/ms190790.aspx

0 голосов
/ 15 марта 2011

Вот мой код, который работает.

exec @hr = sp_OACreate 'MSXML2.ServerXMLHttp', @obj OUT  
if @hr < 0 begin Raiserror('sp_OACreate MSXML2.ServerXMLHttp failed',16,1) 
return end  
exec @hr = sp_OAMethod @obj, 'Open', NULL, 'GET', @UrlString, false  
if @hr <0 begin set @msg = 'sp_OAMethod Open failed' goto eh end  
exec @hr = sp_OAMethod @obj, 'send'  
if @hr <0 begin set @msg = 'sp_OAMethod Send failed' goto eh end  
exec @hr = sp_OAGetProperty @obj, 'status', @status OUT  
if @hr <0 begin set @msg = 'sp_OAMethod read status failed' goto eh end  
if @status <> 200 begin set @msg = 'sp_OAMethod http status ' +str(@status) goto eh end  
exec @hr = sp_OAGetProperty @obj, 'responseText', @response OUT  
if @hr <0 begin set @msg = 'sp_OAMethod read response failed' goto eh end  
exec @hr = sp_OADestroy @obj  
select @response  

......

эх:

exec @hr = sp_OADestroy @obj  
Raiserror(@msg, 16, 1)  
Return  
0 голосов
/ 30 декабря 2008

В SQL Server 2000 и более поздних версиях (если CLR не включен), вы можете использовать COM с помощью хранимых процедур (sp_OACreate, sp_OAMethod и т. Д.), Если у вас есть оболочка COM для веб-службы.

0 голосов
/ 30 декабря 2008

Как говорит AntiSanta, с помощью хранимой процедуры CLR это возможно. Настоящий вопрос в том, сможете ли вы вообще избежать этого. Вызывать веб-службу из хранимой процедуры кажется перевернутым. В идеале у вас должен быть какой-то другой сервис / приложение / слой, который вызывает как хранимую процедуру, так и веб-сервис. Возможно, сохраненный процесс возвращает значения параметров для веб-службы, и вы завершаете локальную транзакцию после завершения вызова WS.

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

0 голосов
/ 30 декабря 2008

Service Broker может предоставить ту функциональность, которую вы ищете здесь.

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