一部のレガシーSQLストアドプロシージャ(SQL Server 2008)は、私が提供したWebサービス(Web Api 2)から情報を取得する必要があります。
エンドポイントを(GETで)呼び出し、データ(JSON形式)を取得し、変換残りのsprocで使用するために一時テーブルで受信したデータを取得する方法は?
ありがとう
最善の方法は、 sed-defined CLR function を作成し、そこからWeb APIを呼び出すことです。これにより、C#および.Netライブラリの全機能を使用してWeb呼び出しを実行し、Jsonを解析できます。それについてはインターネット上にたくさんの情報があります。例: https://blogs.msdn.Microsoft.com/spike/2010/11/25/how-to-consume-a-web-service-from-within-sql-server-using-sql -clr / 。これは特にWebAPIに関するものではありませんが、そこからアイデアを得ることができます。
CLR関数を使用したカスタムアセンブリをSQLServerに展開する必要があることに注意してください。
編集:
OLEオートメーション を使用してTSQLでそれを行う方法があります。例を参照してください ここ 、しかしそれははるかに難しく、文書化されておらず、CLR関数ですぐに使えるソリューションを使用する代わりに、おそらく自分の自転車を発明することに時間を費やすでしょう。
CLRを書かなくても簡単にできます:
Declare @Object as Int;
Declare @ResponseText as Varchar(8000);
Code Snippet
Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'get',
'http://www.webservicex.com/stockquote.asmx/GetQuote?symbol=MSFT', --Your Web Service Url (invoked)
'false'
Exec sp_OAMethod @Object, 'send'
Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT
Select @ResponseText
Exec sp_OADestroy @Object
このCLRストアドプロシージャを使用してみてください: SQL-APIConsumer
exec [dbo].[APICaller_POST]
@URL = 'http://localhost:5000/api/auth/login'
,@BodyJson = '{"Username":"gdiaz","Password":"password"}'