Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да извикам уеб услуга от съхранена процедура на SQL Server

За нещо подобно не се нуждаете от пълно внедряване на уеб услуга. Можете да използвате 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 сървър


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Получаване на начална и крайна дата на седмицата? В Sql сървър?

  2. Entity Framework Code Първо със синоними на SQL Server

  3. Изключение „Посоченият вход не представлява валиден географски екземпляр“ при използване на SqlGeographyBuilder

  4. SQL WHERE клауза, съответстваща на стойности с крайни интервали

  5. Върнете всички външни ключове, които препращат към дадена таблица в SQL Server