Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara memanggil layanan web dari prosedur tersimpan SQL Server

Untuk hal seperti ini, Anda tidak memerlukan implementasi layanan web lengkap. Anda dapat menggunakan SQLCLR (SQL Server's .NET Integration) untuk mengirimkan permintaan ke URL, mendapatkan respons kembali dalam XML (kecuali jika Anda dapat menemukan pustaka JSON yang akan berfungsi tanpa disetel ke UNSAFE ), lalu uraikan respons tersebut.

Lihat halaman MSDN berikut:

  • HttpWebRequest
  • HttpWebResponse
  • XmlDocument
  • Untuk keluar dari alamat:
    • Jika Anda menggunakan SQL Server 2005, 2008, atau 2008 R2, gunakan Uri.EscapeDataString karena tersedia sebelum .NET Framework v4.5
    • Jika Anda menggunakan SQL Server 2012, 2014, atau yang lebih baru, Anda dapat menggunakan Uri.EscapeDataString atau, jika server telah diperbarui ke setidaknya .NET Framework v4.5, Anda dapat menggunakan WebUtility.UrlEncode

Menurut dokumentasi Google Geocoding API , URI API harus diformat seperti berikut:

https://maps.googleapis.com/maps/api/geocode/xml?address={EscapedAddress}&key={API_KEY}

Kirimkan saja dengan 2 variabel yang diganti dengan nilai yang tepat melalui HttpWebRequest , lalu panggil HttpWebRequest.GetResponse , lalu panggil HttpWebResponse.GetResponseStream . Dan jangan jangan lupa untuk memanggil Close dan Dispose metode HttpWebResponse (atau instantiate dalam using blok)!!

Catatan tambahan:

  • Jika belum selesai, Anda harus mengaktifkan (satu kali) "Integrasi CLR" di tingkat server:Mengaktifkan Integrasi CLR
  • Jangan mengambil jalan mudah dan atur database ke TRUSTWORTHY ON . Cukup tanda tangani majelis dengan kata sandi, lalu buat kunci asimetris di master database dengan menunjuk ke DLL yang Anda tandatangani, lalu buat login dari kunci asimetris itu, dan terakhir berikan login itu UNSAFE ASSEMBLY izin. Kemudian Anda dapat mengatur perakitan WITH PERMISSION_SET = EXTERNAL_ACCESS .
  • Jangan gunakan prosedur SP_OA* seperti disarankan oleh pengguna3469363 . Prosedur OLE Automation tersebut telah ditinggalkan sejak SQL Server 2005 dan (semoga) akan dihapus suatu hari nanti (semoga segera). Mereka juga kurang efisien dan kurang aman dibandingkan SQLCLR.
  • Lebih banyak catatan dapat ditemukan dalam jawaban saya untuk pertanyaan serupa di DBA.StackExchange: Membawa data layanan web ke server 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. Bagaimana saya bisa terhubung ke database eksternal dari pernyataan sql atau prosedur tersimpan?

  2. Bagaimana saya bisa menyorot sebuah kata dalam tampilan kisi?

  3. Broker Layanan Atau SqlDependency di SqlLocalDb?

  4. MSSQL dengan python 2.7

  5. Bentrokan tipe operan:int tidak sesuai dengan tanggal + Pernyataan INSERT bertentangan dengan batasan FOREIGN KEY