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 nelmasterdatabase puntando alla tua DLL firmata, quindi crea un login da quella chiave asimmetrica e infine concedi a quel login ilUNSAFE ASSEMBLYautorizzazione. 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