sql >> Database teknologi >  >> RDS >> Sqlserver

Kan en SQL-trigger kalde en webservice?

Selvom det teknisk set kunne, er det virkelig ikke en god idé! En trigger skal være meget mager, og den bør absolut ikke involvere en langvarig operation (hvilket et webservicekald bestemt er)! Genovervej din arkitektur - der burde være en bedre måde at gøre dette på!

Min anbefaling vil være at adskille opgaven med at "lægge mærke til", at du skal kalde webservicen, i din trigger, fra den faktiske udførelse af det webservicekald.

Noget som:

  1. i din triggerkode skal du indsætte et "ring til webservicen senere" i en tabel (bare INSERT for at holde det slankt og hurtigt - det er alt)

  2. har en asynkron tjeneste (et SQL-job eller helst en Windows NT-tjeneste), der foretager disse opkald adskilt fra den faktiske triggerudførelse og gemmer alle data, der hentes fra denne webtjeneste, i de relevante tabeller i din database.

En trigger er en meget kræsen ting - den skal altid være meget hurtig, meget mager - lav en INSERT eller højst to - og undgå med alle midler markører i triggere eller andre langvarige operationer (som et webservicekald)

Brent Ozar har en fantastisk webcast (præsenteret ved SQL PASS) om Top 10 udviklerfejl, der ikke skaleres og triggere er det første han sætter fokus på! Kan varmt anbefales



  1. Sådan konverteres UTC-dato til lokal tidszone i MySql Vælg forespørgsel

  2. Databasemodellering:Hvordan kategoriserer man produkter som Amazon?

  3. Intel SSD, nu ude af sh..err, shamed listen

  4. Eventuelle ulemper ved bitflag i databasekolonner?