उपयोगकर्ता एक बॉक्स में एक खोज शब्द दर्ज करते हैं, और यह मान संग्रहीत प्रक्रिया में जाता है और डेटाबेस में कुछ अलग क्षेत्रों के खिलाफ जांच की जाती है। ये फ़ील्ड हमेशा एक ही डेटा प्रकार के नहीं होते हैं।
एक फ़ील्ड (फ़ोन नंबर) में सभी संख्याएँ होती हैं, इसलिए जब यह जाँचता है तो .Net CLOS फ़ंक्शन का उपयोग करके स्ट्रिंग से सभी गैर-संख्यात्मक वर्णों को हटा देता है।
SELECT dbo.RegexReplace('(123)123-4567', '[^0-9]', '')
समस्या यह है, यह फ़ंक्शन अचानक इस त्रुटि के साथ काम करना बंद कर देता है:
एमएसजी 6533, लेवल 16, स्टेट 49, लाइन 2 AppDomain MyDBName.dbo [रनटाइम] .1575 को सुनिश्चित करने के लिए एस्केलेशन पॉलिसी द्वारा अनलोड किया गया था आपके आवेदन की संगति। महत्वपूर्ण संसाधन तक पहुँचने के दौरान मेमोरी ऑफ़ हो गई। System.Threading.ThreadAbortException: अपवाद का प्रकार 'System.Threading.ThreadAbortException' को फेंक दिया गया था। System.Threading.ThreadAbortException:
मैंने इस त्रुटि के लिए MSDN पर पोस्ट किए गए सुझावों की कोशिश की है , लेकिन अभी भी समस्या हो रही है। इस समय, 64-बिट सर्वर पर स्विच करना हमारे लिए कोई विकल्प नहीं है।
मुझे पता है कि सर्वर ने जो भी मेमोरी रखी है, उसे फिर से शुरू करना जानता है, लेकिन यह उत्पादन वातावरण में व्यवहार्य समाधान नहीं है।
क्या केवल SQL सर्वर 2005 में T-SQL का उपयोग करके गैर-संख्यात्मक वर्णों को स्ट्रिंग से बाहर निकालने का एक तरीका है?