यह संभव है, लेकिन वास्तविक दुनिया में आप जिस भोले-भाले दृष्टिकोण की कल्पना करते हैं, उससे थोड़ा अधिक जटिल है। मुख्य रूप से, HTTP अनुरोध के लिए ट्रिगर प्रतीक्षा करना अस्वीकार्य है:
- एक के लिए, आपका आवेदन एक डरावना पड़ाव पर क्रॉल करेगा, क्योंकि ट्रिगर कुछ दूर और दूर WWW सेवा से प्रतिक्रिया की प्रतीक्षा कर रहे संसाधनों (मुख्य रूप से लॉक) को अवरुद्ध कर देंगे।
- दूसरा, अधिक सूक्ष्म लेकिन इससे भी बदतर, रोलबैक की उपस्थिति में शुद्धता का मुद्दा है। यदि HTTP अनुरोधों को जारी किया गया लेन-देन वापस आ जाता है, तो HTTP अनुरोध को 'पूर्ववत' करने का कोई तरीका नहीं है।
समाधान एक कतार के माध्यम से HTTP अनुरोध से ट्रिगर को अलग करना है। ट्रिगर स्थानीय कतार में अनुरोध को संलग्न करता है और प्रतिबद्ध करता है, जबकि प्रसंस्करण का एक अलग टुकड़ा इन अनुरोधों को हटा देता है और HTTP अनुरोध जारी करता है। यह ऊपर बताई गई दोनों समस्याओं को हल करता है। आप कतारों के लिए सामान्य तालिकाओं का उपयोग कर सकते हैं (तालिकाओं को कतारों के रूप में उपयोग करना देखें) या आप सेवा ब्रोकर का उपयोग कर सकते हैं, दोनों अच्छी तरह से काम करते हैं।
अब इस अनुरोध को कैसे हटाया जाए और वास्तव में HTTP कॉल को कैसे रखा जाए, मैं दृढ़ता से एक समर्पित प्रक्रिया (यानी इस उद्देश्य के लिए समर्पित एक एप्लिकेशन) का उपयोग करने की सलाह देता हूं। जबकि SQLCLR का उपयोग करना संभव है, यह एक बहुत ही खराब विकल्प है। SQL सर्वर संसाधन (विशेष रूप से श्रमिक) इंटरनेट प्रतिक्रियाओं की प्रतीक्षा में बर्बाद होने के लिए बहुत कीमती हैं।