За нещо подобно не се нуждаете от пълно внедряване на уеб услуга. Можете да използвате SQLCLR (интеграция на .NET на SQL Server), за да изпратите заявката до URL адреса, да получите отговора обратно в XML (освен ако можете да намерите JSON библиотека, която ще работи без е зададено на UNSAFE
), и след това анализирайте този отговор.
Вижте следните страници на MSDN:
- HttpWebRequest
- HttpWebResponse
- XmlDocument
- За да избегнете адреса:
- Ако използвате SQL Server 2005, 2008 или 2008 R2, използвайте Uri.EscapeDataString тъй като беше наличен преди .NET Framework v4.5
- Ако използвате SQL Server 2012, 2014 или по-нов, тогава можете да използвате Uri.EscapeDataString или, ако сървърът е актуализиран поне до .NET Framework v4.5, тогава можете алтернативно да използвате WebUtility.UrlEncode
Според документацията на Google Geocoding API , API URI трябва да бъде форматиран подобно на следното:
https://maps.googleapis.com/maps/api/geocode/xml?address={EscapedAddress}&key={API_KEY}
Просто изпратете това с тези 2 променливи, заместени с правилните им стойности чрез HttpWebRequest
, след това извикайте HttpWebRequest.GetResponse
, след това извикайте HttpWebResponse.GetResponseStream
. И не забравете да извикате Close
и Dispose
методи на HttpWebResponse
(или го инстанцирайте в using
блокирай)!!
Допълнителни бележки:
- Ако още не сте го направили, ще трябва да активирате (еднократно) „CLR Integration“ на ниво сървър:Активиране на CLR интегриране
- Не поемайте по лесния път и настройте базата данни на
TRUSTWORTHY ON
. Просто подпишете сглобката с парола, след което създайте асиметричен ключ вmaster
база данни, като посочите вашата подписана DLL, след това създайте вход от този асиметричен ключ и накрая дайте на този входUNSAFE ASSEMBLY
разрешение. След това можете да зададете сборкатаWITH PERMISSION_SET = EXTERNAL_ACCESS
. - Не използвайте процедурите SP_OA* като препоръчани от user3469363 . Тези процедури за автоматизация на OLE са отхвърлени от SQL Server 2005 и (да се надяваме) ще бъдат премахнати някой ден (да се надяваме скоро). Те също са по-малко ефективни и по-малко сигурни от SQLCLR.
- Още повече бележки могат да бъдат намерени в моя отговор на подобен въпрос на DBA.StackExchange: Пренасяне на данни от уеб услуги в SQL сървър