Gli utenti inseriscono un termine di ricerca in una casella e quel valore viene passato a una procedura memorizzata e confrontato con alcuni campi diversi nel database. Questi campi non sono sempre dello stesso tipo di dati.
Un campo (numero di telefono) è composto da tutti i numeri, quindi quando lo si controlla rimuove tutti i caratteri non numerici dalla stringa utilizzando una funzione CLR .Net.
SELECT dbo.RegexReplace('(123)123-4567', '[^0-9]', '')
Il problema è che questa funzione smette bruscamente di funzionare occasionalmente con il seguente errore:
Messaggio 6533, livello 16, stato 49, linea 2 AppDomain MyDBName.dbo [runtime] .1575 è stato scaricato dalla politica di escalation per garantire che coerenza della tua applicazione. Memoria esaurita durante l'accesso a una risorsa critica. System.Threading.ThreadAbortException: eccezione di tipo È stato generato "System.Threading.ThreadAbortException". System.Threading.ThreadAbortException:
Ho provato i suggerimenti pubblicati su MSDN per questo errore, ma sto ancora riscontrando il problema. Al momento, passare a un server a 64 bit non è un'opzione per noi.
So che il riavvio del server rilascia qualsiasi memoria abbia conservato, ma questa non è una soluzione praticabile in un ambiente di produzione.
Esiste un modo per eliminare i caratteri non numerici da una stringa in SQL Server 2005 utilizzando solo T-SQL?