Per qualcosa del genere, non è necessaria un'implementazione completa del servizio Web. Puoi utilizzare SQLCLR (integrazione .NET di SQL Server) per inviare la richiesta all'URL, ottenere la risposta in XML (a meno che tu non riesca a trovare una libreria JSON che funzionerà senza essendo impostato su UNSAFE
), quindi analizzare la risposta.
Guarda le seguenti pagine MSDN:
- HttpWebRequest
- HttpWebResponse
- XmlDocument
- Per sfuggire all'indirizzo:
- Se utilizzi SQL Server 2005, 2008 o 2008 R2, utilizza Uri.EscapeDataString poiché era disponibile prima di .NET Framework v4.5
- Se utilizzi SQL Server 2012, 2014 o versioni successive, puoi utilizzare Uri.EscapeDataString oppure, se il server è stato aggiornato almeno a .NET Framework v4.5, puoi in alternativa utilizzare WebUtility.UrlEncode
Secondo la documentazione dell'API di Google Geocoding , l'URI dell'API deve essere formattato in modo simile al seguente:
https://maps.googleapis.com/maps/api/geocode/xml?address={EscapedAddress}&key={API_KEY}
Invialo semplicemente con quelle 2 variabili sostituite con i loro valori appropriati tramite HttpWebRequest
, quindi chiama HttpWebRequest.GetResponse
, quindi chiama HttpWebResponse.GetResponseStream
. E non dimentica di chiamare il Close
e Dispose
metodi di HttpWebResponse
(o istanziarlo in un using
blocco)!!
Note aggiuntive:
- Se non l'hai già fatto, dovrai abilitare (una volta) "Integrazione CLR" a livello di server:Abilitazione dell'integrazione CLR
- Non prendere la strada facile e imposta il database su
TRUSTWORTHY ON
. Basta firmare l'assembly con una password, quindi creare una chiave asimmetrica nelmaster
database puntando alla tua DLL firmata, quindi crea un login da quella chiave asimmetrica e infine concedi a quel login ilUNSAFE ASSEMBLY
autorizzazione. Quindi puoi impostare l'assemblyWITH PERMISSION_SET = EXTERNAL_ACCESS
. - Non utilizzare le procedure SP_OA* come consigliato dall'utente3469363 . Tali procedure di automazione OLE sono state deprecate da SQL Server 2005 e (si spera) verranno rimosse un giorno (si spera presto). Sono anche meno efficienti e meno sicuri di SQLCLR.
- Ancora più note possono essere trovate nella mia risposta a una domanda simile su DBA.StackExchange: Portare i dati del servizio web nel server SQL