Voor zoiets heb je geen volledige webservice-implementatie nodig. U kunt SQLCLR (SQL Server's .NET Integration) gebruiken om het verzoek in te dienen bij de URL, het antwoord terug te krijgen in XML (tenzij u een JSON-bibliotheek kunt vinden die zonder werkt) ingesteld op UNSAFE
), en ontleden dan dat antwoord.
Bekijk de volgende MSDN-pagina's:
- HttpWebRequest
- HttpWebResponse
- XmlDocument
- Om aan het adres te ontsnappen:
- Als je SQL Server 2005, 2008 of 2008 R2 gebruikt, gebruik dan Uri.EscapeDataString zoals het beschikbaar was vóór .NET Framework v4.5
- Als u SQL Server 2012, 2014 of nieuwer gebruikt, kunt u ofwel Uri.EscapeDataString gebruiken of, als de server is bijgewerkt naar ten minste .NET Framework v4.5, u ook WebUtility.UrlEncode
Volgens de Google Geocoding API-documentatie , moet de API-URI als volgt worden opgemaakt:
https://maps.googleapis.com/maps/api/geocode/xml?address={EscapedAddress}&key={API_KEY}
Dien dat gewoon in met die 2 variabelen vervangen door hun juiste waarden via HttpWebRequest
en bel vervolgens HttpWebRequest.GetResponse
en bel vervolgens HttpWebResponse.GetResponseStream
. En doe niet vergeet de Close
. te bellen en Dispose
methoden van HttpWebResponse
(of instantiëren in een using
blok)!!
Aanvullende opmerkingen:
- Als dit nog niet is gedaan, moet u (eenmalig) "CLR-integratie" op serverniveau inschakelen:CLR-integratie inschakelen
- Neem niet de gemakkelijke weg en zet de database op
TRUSTWORTHY ON
. Onderteken de assembly gewoon met een wachtwoord en maak vervolgens een asymmetrische sleutel in demaster
database door te verwijzen naar uw ondertekende DLL, maak vervolgens een login aan met die asymmetrische sleutel en geef die login ten slotte deUNSAFE ASSEMBLY
toestemming. Vervolgens kunt u de assembly instellenWITH PERMISSION_SET = EXTERNAL_ACCESS
. - Gebruik de SP_OA*-procedures niet zoals geadviseerd door gebruiker3469363 . Die OLE-automatiseringsprocedures zijn verouderd sinds SQL Server 2005 en zullen (hopelijk) op een dag (hopelijk binnenkort) worden verwijderd. Ze zijn ook minder efficiënt en minder veilig dan SQLCLR.
- Nog meer opmerkingen zijn te vinden in mijn antwoord op een vergelijkbare vraag op DBA.StackExchange: Webservicegegevens naar de SQL-server brengen