Para algo como esto, no necesita una implementación completa del servicio web. Puede usar SQLCLR (Integración .NET de SQL Server) para enviar la solicitud a la URL, obtener la respuesta en XML (a menos que pueda encontrar una biblioteca JSON que funcione sin se establece en UNSAFE
), y luego analice esa respuesta.
Mire las siguientes páginas de MSDN:
- HttpWebRequest
- HttpWebResponse
- Documento Xml
- Para escapar de la dirección:
- Si usa SQL Server 2005, 2008 o 2008 R2, use Uri.Cadena de datos de escape ya que estaba disponible antes de .NET Framework v4.5
- Si está usando SQL Server 2012, 2014 o más reciente, puede usar Uri.EscapeDataString o, si el servidor se actualizó al menos a .NET Framework v4.5, entonces puede usar alternativamente WebUtility.UrlEncode
Según la documentación de la API de codificación geográfica de Google , el URI de la API debe tener un formato similar al siguiente:
https://maps.googleapis.com/maps/api/geocode/xml?address={EscapedAddress}&key={API_KEY}
Simplemente envíe eso con esas 2 variables sustituidas con sus valores adecuados a través de HttpWebRequest
, luego llama a HttpWebRequest.GetResponse
, luego llama a HttpWebResponse.GetResponseStream
. Y no olvida llamar al Close
y Dispose
métodos de HttpWebResponse
(o instanciarlo en un using
bloque)!!
Notas adicionales:
- Si aún no lo ha hecho, deberá habilitar (una vez) "Integración CLR" a nivel de servidor:Habilitación de la integración CLR
- No tome el camino fácil y establezca la base de datos en
TRUSTWORTHY ON
. Simplemente firme el ensamblaje con una contraseña, luego cree una clave asimétrica en elmaster
base de datos apuntando a su DLL firmada, luego cree un inicio de sesión a partir de esa clave asimétrica y finalmente otorgue a ese inicio de sesión elUNSAFE ASSEMBLY
permiso. Luego puede configurar el ensambladoWITH PERMISSION_SET = EXTERNAL_ACCESS
. - No use los procedimientos SP_OA* como recomendado por user3469363 . Esos procedimientos de automatización OLE han quedado obsoletos desde SQL Server 2005 y (con suerte) se eliminarán algún día (con suerte pronto). También son menos eficientes y menos seguros que SQLCLR.
- Se pueden encontrar aún más notas en mi respuesta a una pregunta similar en DBA.StackExchange: Llevar datos del servicio web al servidor SQL