1) हां, मैं इसे विश्वसनीय मानता हूं क्योंकि यह सही ढंग से करता है कि उद्देश्य को करने के लिए डिज़ाइन किया गया था (कैश अमान्यकरण)
2) नहीं। यही कारण है कि आप केवल एक प्रश्न जारी करके सदस्यता ले सकते हैं, यह सुनिश्चित करता है कि डेटा प्राप्त करने और नए अपडेट सूचित करने के बीच कोई दौड़ नहीं है
3) डेटाबेस (या उदाहरण) एक SqlNotificationInfo
Restart
. का मान . पढ़ें कि कैसे SqlDependency और यह क्वेरी नोटिफिकेशन पर आधारित है
बेहतर समझ के लिए। SqlDependency
के रूप में डेटाबेस के लिए एक खुला कनेक्शन हर समय रखता है, डेटाबेस की अनुपलब्धता का पता SqlDependency
द्वारा लगाया जाएगा किसी भी स्पष्ट क्वेरी अधिसूचना से पहले भी
4) नहीं। इस पर और नीचे...
5) कोई 'मिस्ड डेटा' नहीं है। क्वेरी अधिसूचना (और इसलिए SqlD निर्भरता) आपको कभी भी क्या . के बारे में सूचित नहीं करती है डेटा बदल गया। यह केवल आपको सूचित करता है कि यह बदल गया . आपको हमेशा वापस जाकर सब . पढ़ना चाहिए डेटा वापस देखने के लिए कि क्या बदल गया था (और मैं आपको प्रश्न/उत्तर संख्या 2 पर वापस संदर्भित करता हूं)। एक नए शुरू किए गए एप्लिकेशन ने अभी तक शुरू करने के लिए डेटा से पूछताछ नहीं की थी, इसलिए अधिसूचित होने के लिए कोई बदलाव नहीं है। केवल बाद इसने पहले डेटा के बारे में पूछा है कि क्या उसे सूचना मिल सकती है।
आपकी समस्या के विवरण से मुझे विश्वास नहीं हो रहा है कि आपको क्वेरी सूचनाओं की आवश्यकता है। मुझे ऐसा लगता है कि आप किसी भी बदलाव पर कार्रवाई करना चाहते हैं, चाहे वह किसी भी समय हुआ हो, भले ही आपका एप्लिकेशन नहीं चल रहा हो . यह निश्चित रूप से कैश अमान्यता नहीं है, यह परिवर्तन ट्रैकिंग है। इसलिए आपको एक परिवर्तन ट्रैकिंग तकनीक परिनियोजित करने की आवश्यकता है, जैसे डेटा कैप्चर बदलें या ट्रैकिंग बदलें , जो दोनों SQL Server 2008 और बाद में केवल (SQL Server 2005 में उपलब्ध नहीं) हैं। SQL सर्वर 2005 के साथ एक ट्रिगर तैनात करना और सर्विस ब्रोकर उसी समस्या को संभालने के लिए जिसे आप संभालने का प्रयास कर रहे हैं (परिवर्तनों का पता लगाएं, नए डेटा की प्रत्येक पंक्ति पर प्रतिक्रिया दें)।