1

SQL Server ストアド プロシージャから Web サービスを使用する方法を知りたいです。列がユーザーの都市と州を指定するテーブルがあります。この住所をパラメーターとして Google Geocoding API Web サービスに渡し、緯度と経度を取得したいと考えています。

このジオコーディング API を C# でうまく利用できました。しかし今、私はそれをストアドプロシージャで使いたいと思っています。

誰でもこれを行う方法を提案できますか? または、リンクを教えてください。

どんな助けでも大歓迎です!!

ありがとう。

4

2 に答える 2

4

このような場合、完全な Web サービスの実装は必要ありません。SQLCLR (SQL Server の .NET Integration) を使用して、要求を URL に送信し、XML で応答を取得して (に設定しなくUNSAFEても動作する JSON ライブラリが見つからない場合)、その応答を解析できます。

次の MSDN ページを見てください。

Google Geocoding API ドキュメントによると、API URI は次のようにフォーマットする必要があります。

https://maps.googleapis.com/maps/api/geocode/xml?address={EscapedAddress}&key={API_KEY}

を介して適切な値に置換された 2 つの変数を送信しHttpWebRequest、次に を呼び出しHttpWebRequest.GetResponse、次に を呼び出しますHttpWebResponse.GetResponseStream。とのメソッドを呼び出す(またはブロックでインスタンス化する) ことを忘れないでください!!CloseDisposeHttpWebResponseusing

その他の注意事項:

  • まだ行っていない場合は、サーバー レベルで「CLR 統合」を (1 回) 有効にする必要があります。CLR 統合の有効化
  • 簡単な道をたどらず、データベースを に設定してくださいTRUSTWORTHY ON。パスワードでアセンブリにmaster署名し、署名済みの DLL を指定してデータベースに非対称キーを作成し、その非対称キーからログインを作成し、最後にそのログインにUNSAFE ASSEMBLY権限を付与します。次に、アセンブリを設定できますWITH PERMISSION_SET = EXTERNAL_ACCESS
  • user3469363 が提唱するSP_OA* 手順を使用しないでください。これらの OLE オートメーション プロシージャは、SQL Server 2005 以降非推奨となっており、(できれば) いつか (できればすぐに) 削除される予定です。また、SQLCLR よりも効率が低く、安全性も低くなります。
  • DBA.StackExchange の同様の質問に対する私の回答には、さらに多くのメモがあります。SQL サーバーへの Web サービス データの取り込み
于 2015-05-14T22:12:52.993 に答える
0

Omar Frometa には、これを行う方法の例があります。このリンクに アクセスしてください http://www.codeproject.com/Articles/428200/How-to-invoke-a-Web-Service-from-a-Stored-Procedur

要約すると、拡張ストアド プロシージャ SP_OACreate および SP_OAMethod を使用して、MSXML2.ServerXMLHttp などのオブジェクトにアクセスします。

于 2014-03-27T15:48:40.790 に答える