sql >> Databasteknik >  >> RDS >> Sqlserver

Kan en SQL-utlösare anropa en webbtjänst?

Även om det tekniskt skulle kunna, är det verkligen ingen bra idé! En trigger ska vara väldigt mager, och den ska definitivt inte innebära en långvarig operation (vilket ett webbtjänstsamtal definitivt är)! Tänk om din arkitektur – det borde finnas ett bättre sätt att göra detta på!

Min rekommendation skulle vara att separera uppgiften att "märka" att du behöver anropa webbtjänsten, i din trigger, från det faktiska utförandet av det webbtjänstanropet.

Något i stil med:

  1. i din triggerkod, infoga ett "ringa webbtjänsten senare" i en tabell (bara INSERT för att hålla den mager och snabb - det är allt)

  2. har en asynkron tjänst (ett SQL-jobb, eller helst en Windows NT-tjänst) som gör dessa anrop separat från den faktiska triggerexekveringen och lagrar all data som hämtas från den webbtjänsten i lämpliga tabeller i din databas.

En utlösare är en väldigt petig sak - den ska alltid vara väldigt snabb, väldigt mager - gör en INSERT eller högst två - och undvik för all del markörer i triggers eller andra långa operationer (som ett webbtjänstsamtal)

Brent Ozar har en fantastisk webbsändning (presenterad på SQL PASS) om De 10 bästa utvecklarmisstagen som inte skalas och triggers är det första han fokuserar på! Rekommenderas varmt



  1. MySQL-tabellen ökar med 10 av någon anledning

  2. Topp 7 jobb som kräver SQL

  3. Rekursiva barn-/förälderfrågor i T/SQL

  4. MySQL-heltalsjämförelse ignorerar efterföljande alfatecken