För något sådant här behöver du inte en fullständig webbtjänstimplementering. Du kan använda SQLCLR (SQL Servers .NET-integration) för att skicka begäran till URL:en, få tillbaka svaret i XML (såvida du inte kan hitta ett JSON-bibliotek som fungerar utan är inställd på UNSAFE
), och analysera sedan det svaret.
Titta på följande MSDN-sidor:
- HttpWebRequest
- HttpWebResponse
- XmlDocument
- Så här undviker du adressen:
- Om du använder SQL Server 2005, 2008 eller 2008 R2, använd sedan Uri.EscapeDataString eftersom det var tillgängligt före .NET Framework v4.5
- Om du använder SQL Server 2012, 2014 eller nyare kan du använda antingen Uri.EscapeDataString eller, om servern har uppdaterats till minst .NET Framework v4.5, kan du alternativt använda WebUtility.UrlEncode
Enligt dokumentationen för Google Geocoding API , bör API-URI:n formateras på samma sätt som följande:
https://maps.googleapis.com/maps/api/geocode/xml?address={EscapedAddress}&key={API_KEY}
Skicka bara in det med de två variablerna ersatta med deras rätta värden via HttpWebRequest
, ring sedan HttpWebRequest.GetResponse
, anrop sedan HttpWebResponse.GetResponseStream
. Och gör inte glöm att ringa Close
och Dispose
metoder för HttpWebResponse
(eller instansiera det i en using
block)!!
Ytterligare anmärkningar:
- Om du inte redan har gjort det måste du aktivera (en gång) "CLR Integration" på servernivå:Aktivera CLR-integration
- Ta inte den enkla vägen och ställ in databasen på
TRUSTWORTHY ON
. Signera bara sammansättningen med ett lösenord och skapa sedan en asymmetrisk nyckel imaster
databas genom att peka på din signerade DLL, skapa sedan en inloggning från den asymmetriska nyckeln och ge slutligen den inloggningenUNSAFE ASSEMBLY
tillstånd. Sedan kan du ställa in sammansättningenWITH PERMISSION_SET = EXTERNAL_ACCESS
. - Använd inte SP_OA*-procedurerna som förespråkas av user3469363 . Dessa OLE Automation-procedurer har föråldrats sedan SQL Server 2005 och kommer (förhoppningsvis) att tas bort någon gång (förhoppningsvis snart). De är också mindre effektiva och mindre säkra än SQLCLR.
- Ännu fler anteckningar finns i mitt svar på en liknande fråga på DBA.StackExchange: Överföra webbtjänstdata till SQL-servern