Kullanıcılar bir kutuya bir arama terimi girer ve bu değer saklı bir işleme geçirilir ve veritabanındaki birkaç farklı alana karşı kontrol edilir. Bu alanlar her zaman aynı veri türünde değildir.
Bir alan (telefon numarası) tüm numaralardan oluşur, bu nedenle işaretlenirken .Net CLR işlevi kullanılarak sayısal olmayan tüm karakterler dizeden çıkarılır.
SELECT dbo.RegexReplace('(123)123-4567', '[^0-9]', '')
Sorun şu ki, bu fonksiyon aniden aşağıdaki hata ile çalışmayı durdurur:
Msg 6533, Seviye 16, Durum 49, Satır 2 AppDomain MyDBName.dbo [çalışma zamanı] .1575, iletme politikası tarafından kaldırıldı. uygulamanızın tutarlılığı. Kritik bir kaynağa erişilirken bellek yetersiz oldu. System.Threading.ThreadAbortException: Tür istisnası 'System.Threading.ThreadAbortException' atıldı. System.Threading.ThreadAbortException:
Bu hata için MSDN'de yayınlanan önerileri denedim , ancak yine de sorunu alıyorum. Şu anda 64 bit sunucuya geçmek bizim için bir seçenek değil.
Sunucuyu yeniden başlatmanın sahip olduğu belleği serbest bıraktığını biliyorum, ancak bu bir üretim ortamında geçerli bir çözüm değil.
Sayısal olmayan karakterleri yalnızca T-SQL kullanarak SQL Server 2005'te bir dizeden ayırmanın bir yolu var mı?