Do czegoś takiego nie potrzebujesz pełnej implementacji usługi sieciowej. Możesz użyć SQLCLR (SQL Server's .NET Integration), aby przesłać żądanie do adresu URL, uzyskać odpowiedź z powrotem w formacie XML (chyba że możesz znaleźć bibliotekę JSON, która będzie działać bez ustawienie UNSAFE
), a następnie przeanalizuj tę odpowiedź.
Spójrz na następujące strony MSDN:
- HttpWebRequest
- HttpWebResponse
- XmlDocument
- Aby zmienić adres:
- Jeśli używasz SQL Server 2005, 2008 lub 2008 R2, użyj Uri.EscapeDataString ponieważ był dostępny przed .NET Framework v4.5
- Jeśli używasz programu SQL Server 2012, 2014 lub nowszego, możesz użyć Uri.EscapeDataString lub, jeśli serwer został zaktualizowany do co najmniej .NET Framework v4.5, możesz alternatywnie użyć WebUtility.UrlEncode
Zgodnie z dokumentacją interfejsu API Google Geocoding , identyfikator URI interfejsu API powinien być sformatowany podobnie do następującego:
https://maps.googleapis.com/maps/api/geocode/xml?address={EscapedAddress}&key={API_KEY}
Po prostu prześlij to z tymi 2 zmiennymi podstawionymi ich odpowiednimi wartościami za pomocą HttpWebRequest
, a następnie wywołaj HttpWebRequest.GetResponse
, a następnie wywołaj HttpWebResponse.GetResponseStream
. I nie zapomnij wywołać Close
i Dispose
metody HttpWebResponse
(lub stwórz jego instancję w using
blok)!!
Dodatkowe uwagi:
- Jeśli jeszcze tego nie zrobiłeś, będziesz musiał (jednorazowo) włączyć „Integrację CLR” na poziomie serwera:Włączanie integracji CLR
- Nie idź na łatwiznę i ustaw bazę danych na
TRUSTWORTHY ON
. Wystarczy podpisać zestaw hasłem, a następnie utworzyć klucz asymetryczny wmaster
bazy danych, wskazując na podpisaną bibliotekę DLL, a następnie utwórz login z tego klucza asymetrycznego i na koniec przyznaj temu loginowiUNSAFE ASSEMBLY
pozwolenie. Następnie możesz ustawić zestawWITH PERMISSION_SET = EXTERNAL_ACCESS
. - Nie używaj procedur SP_OA* jako polecanej przez użytkownika 3469363 . Te procedury automatyzacji OLE są przestarzałe od SQL Server 2005 i zostaną (miejmy nadzieję) usunięte pewnego dnia (miejmy nadzieję, że wkrótce). Są również mniej wydajne i mniej bezpieczne niż SQLCLR.
- Jeszcze więcej uwag można znaleźć w mojej odpowiedzi na podobne pytanie na DBA.StackExchange: Wprowadzanie danych usługi sieciowej do serwera SQL