Хотя я согласен со многими пунктами Ремуса, я не согласен с тем, что на уровне приложений существует только один «правильный» способ вызова веб-сервисов.Вызов сервисов непосредственно из SQL Server может иметь свое применение (хотя, я признаю, это редко является хорошей идеей в производственной среде).Одним из преимуществ SQLCLR является то, что, если вы абстрагируете свой код в модульные модули многократного использования, вы сможете легко перемещать функции между базой данных и другими уровнями .NET в иерархии вашего приложения и использовать ту же функцию геокодирования.может использоваться в клиентском приложении, веб-уровне или уровне базы данных с минимальным необходимым объемом записи.
Однако, если вы собираетесь пойти по маршруту SQLCLR, вы можете рассмотреть возможность его использования.других сервисов геокодирования Bing Maps (в частности, API REST Locations - http://msdn.microsoft.com/en-us/library/ff701715.aspx),, который, поскольку к нему осуществляется доступ по простому URL-адресу REST, позволит избежать проблемы связи SOAP от SQL Server к службам WCF. Если вы геокодируетепри загрузке данных вы также можете рассмотреть возможности массового геокодирования, предоставляемые Bing Spatial Data Services - http://msdn.microsoft.com/en-us/library/ff701734.aspx.
В любом случае, имейте в виду, что веб-служба, вызывающая информацию адреса геокодирования, вставлена втаблица как часть триггера INSERT / UPDATEНапример, не завершится, пока не будет получен ответ, и остановит дальнейшие обновления этой таблицы.Скажем, получение ответа от службы геокодирования занимает секунду - если у вас есть какое-то значительное количество записей, вставленных в вашу адресную таблицу, вы можете быстро обнаружить, что ваш сервер поставлен на колени.Эту проблему можно несколько смягчить, используя Service Broker для асинхронного управления запросами к службе геокодирования и обновляя таблицу с помощью геоодированного ответа, как только он будет возвращен.