このような場合、完全なWebサービスの実装は必要ありません。 SQLCLR(SQL Serverの.NET統合)を使用して、要求をURLに送信し、応答をXMLで取得できます(なしで機能するJSONライブラリが見つからない場合 UNSAFE
に設定されています )、次にその応答を解析します。
次のMSDNページをご覧ください。
- HttpWebRequest
- HttpWebResponse
- XmlDocument
- アドレスをエスケープするには:
- SQL Server 2005、2008、または2008 R2を使用している場合は、 Uri.EscapeDataString .NETFrameworkv4.5より前に利用可能だったため
- SQL Server 2012、2014以降を使用している場合は、Uri.EscapeDataStringを使用できます。サーバーが、少なくとも.NET Framework v4.5に更新されている場合は、代わりに
WebUtility.UrlEncode
GoogleGeocodingAPIドキュメント によると 、APIURIは次のようにフォーマットする必要があります。
https://maps.googleapis.com/maps/api/geocode/xml?address={EscapedAddress}&key={API_KEY}
HttpWebRequest
を介して、これら2つの変数を適切な値に置き換えて送信するだけです。 、次にHttpWebRequest.GetResponse
を呼び出します 、次にHttpWebResponse.GetResponseStream
を呼び出します 。そして、しない Close
を呼び出すのを忘れてください およびDispose
HttpWebResponse
のメソッド (またはusing
でインスタンス化します ブロック)!!
追記:
- まだ行っていない場合は、サーバーレベルで「CLR統合」を(1回)有効にする必要があります。CLR統合の有効化
- 簡単な方法でデータベースを
TRUSTWORTHY ON
に設定しないでください。 。パスワードを使用してアセンブリに署名し、master
で非対称キーを作成するだけです。 署名されたDLLをポイントしてデータベースを作成し、その非対称キーからログインを作成し、最後にそのログインにUNSAFE ASSEMBLY
を付与します。 許可。次に、アセンブリをWITH PERMISSION_SET = EXTERNAL_ACCESS
で設定できます。 。 - SP_OA*プロシージャを
user3469363が推奨する として使用しないでください。 。これらのOLEオートメーション手順は、SQL Server 2005以降非推奨になっており、(願わくば)いつか(願わくばすぐに)削除される予定です。また、SQLCLRよりも効率が低く、安全性も低くなります。 - DBA.StackExchangeの同様の質問に対する私の回答には、さらに多くのメモがあります。 WebサービスデータをSQLサーバーに取り込む