Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Czy SQL Server może wysłać żądanie internetowe?

Jest to możliwe, ale w prawdziwym świecie jest to trochę bardziej skomplikowane niż naiwne podejście, które sobie wyobrażasz. Przede wszystkim niedopuszczalne jest, aby wyzwalacz czekał na żądanie HTTP:

  • Po pierwsze, Twoja aplikacja będzie indeksować aż do piskliwego zatrzymania, ponieważ wyzwalacze będą blokować zasoby (głównie blokady) czekając na odpowiedź z jakiejś odległej usługi WWW.
  • Drugą, bardziej subtelną, ale znacznie gorszą, jest kwestia poprawności w przypadku cofnięć. Jeśli transakcja, która została wysłana do żądań HTTP, zostanie wycofana, nie ma możliwości „cofnięcia” żądania HTTP.

Rozwiązaniem jest oddzielenie wyzwalacza od żądania HTTP za pośrednictwem kolejki. Wyzwalacz umieszcza żądanie w kolejce lokalnej i zatwierdza, podczas gdy oddzielny element przetwarzania usuwa te żądania z kolejki i wysyła żądanie HTTP. Rozwiązuje to oba wskazane powyżej problemy. Możesz użyć zwykłych tabel do kolejek (patrz Używanie tabel jako kolejek) lub możesz użyć Service Broker, oba działają dobrze.

Teraz o tym, jak usunąć te żądania i faktycznie wykonać wywołanie HTTP, zdecydowanie polecam użycie dedykowanego procesu (tj. aplikacji dedykowanej do tego celu). Chociaż możliwe jest użycie SQLCLR, jest to bardzo zły wybór. Zasoby SQL Server (w szczególności pracownicy) są zbyt cenne, aby je marnować na czekanie na odpowiedzi internetowe.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co to jest serwer SQL?

  2. Co to jest PROFIL STATYSTYKI w SQL Server?

  3. Jak mogę wykryć, że tworzenie, aktualizacja, usuwanie zakończyło się powodzeniem w Codeigniter?

  4. Jak usunąć wiodące białe znaki w SQL Server — LTRIM()

  5. Czy każdy klucz obcy SQL Server powinien mieć pasujący indeks?