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

Bisakah SQL Server mengirim permintaan web?

Itu mungkin, tetapi di dunia nyata sedikit lebih rumit daripada pendekatan naif yang Anda bayangkan. Terutama, tidak dapat diterima jika pemicu menunggu permintaan HTTP:

  • Untuk satu, aplikasi Anda akan merangkak berhenti, karena pemicu akan memblokir sumber daya (terutama kunci) menunggu respons dari beberapa layanan WWW yang jauh dan jauh.
  • Kedua, lebih halus tetapi jauh lebih buruk, adalah masalah kebenaran dengan adanya rollback. Jika transaksi yang dikeluarkan untuk permintaan HTTP dibatalkan, tidak ada cara untuk 'mengurungkan' permintaan HTTP.

Solusinya adalah memisahkan pemicu dari permintaan HTTP melalui antrian. Pemicu mengantrekan permintaan ke dalam antrean lokal dan melakukan, sementara bagian pemrosesan yang terpisah menghapus permintaan ini dan mengeluarkan permintaan HTTP. Ini memecahkan kedua masalah yang disebutkan di atas. Anda dapat menggunakan tabel biasa untuk antrian (lihat Menggunakan Tabel sebagai Antrian) atau Anda dapat menggunakan Pialang Layanan, keduanya berfungsi dengan baik.

Sekarang tentang cara dequeue permintaan ini dan benar-benar menempatkan panggilan HTTP, saya sangat menyarankan menggunakan proses khusus (yaitu aplikasi yang didedikasikan untuk tujuan ini). Meskipun dimungkinkan untuk menggunakan SQLCLR, ini adalah pilihan yang sangat buruk. Sumber daya SQL Server (khususnya pekerja) terlalu berharga untuk disia-siakan untuk menunggu tanggapan Internet.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buat diagram hubungan tabel dari skema yang ada (SQL Server)

  2. Tampilan INFORMATION_SCHEMA SQL Server | Lihat apakah Tabel Ada

  3. Nilai kolom identitas tiba-tiba melompat ke 1001 di server sql

  4. Pisahkan nilai pada beberapa baris

  5. Apakah lebih baik menjalankan banyak perintah sql dengan satu koneksi, atau menyambung kembali setiap saat?