ผู้ใช้ป้อนคำค้นหาในกล่องและค่านั้นจะถูกส่งผ่านไปยังขั้นตอนการจัดเก็บและตรวจสอบกับเขตข้อมูลที่แตกต่างกันไม่กี่ในฐานข้อมูล ฟิลด์เหล่านี้ไม่ได้เป็นชนิดข้อมูลเดียวกันเสมอไป
หนึ่งฟิลด์ (หมายเลขโทรศัพท์) ประกอบด้วยตัวเลขทั้งหมดดังนั้นเมื่อตรวจสอบจะตัดอักขระที่ไม่ใช่ตัวเลขทั้งหมดออกจากสตริงโดยใช้ฟังก์ชัน. Net CLR
SELECT dbo.RegexReplace('(123)123-4567', '[^0-9]', '')
ปัญหาคือฟังก์ชั่นนี้หยุดทำงานทันทีที่มีข้อผิดพลาดดังต่อไปนี้:
ข่าวสารเกี่ยวกับ 6533, ระดับ 16, สถานะ 49, บรรทัด 2 AppDomain MyDBName.dbo [runtime] .1575 ถูกยกเลิกการโหลดโดยนโยบายการเลื่อนระดับเพื่อให้แน่ใจว่า ความสอดคล้องของใบสมัครของคุณ หน่วยความจำไม่เพียงพอเกิดขึ้นขณะเข้าถึงทรัพยากรที่สำคัญ System.Threading.ThreadAbortException: ข้อยกเว้นชนิด 'System.Threading.ThreadAbortException' ถูกส่งไป System.Threading.ThreadAbortException:
ฉันลองคำแนะนำที่โพสต์บนMSDNสำหรับข้อผิดพลาดนี้ แต่ฉันยังคงพบปัญหา ในขณะนี้การสลับไปใช้เซิร์ฟเวอร์ 64 บิตไม่ใช่ตัวเลือกสำหรับเรา
ฉันรู้ว่าการรีสตาร์ทเซิร์ฟเวอร์จะปล่อยหน่วยความจำใด ๆ ก็ตาม แต่นั่นไม่ใช่วิธีแก้ปัญหาที่ใช้งานได้ในสภาพแวดล้อมการใช้งานจริง
มีวิธีการแยกอักขระที่ไม่ใช่ตัวเลขออกจากสตริงใน SQL Server 2005 โดยใช้ T-SQL เท่านั้นหรือไม่