사용자는 상자에 검색어를 입력하면 해당 값이 저장 프로 시저로 전달되고 데이터베이스의 몇 가지 다른 필드에 대해 검사됩니다. 이러한 필드가 항상 동일한 데이터 유형 인 것은 아닙니다.
하나의 필드 (전화 번호)는 모든 숫자로 구성되므로이를 확인할 때 .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 비트 서버로 전환하는 것은 옵션이 아닙니다.
서버를 다시 시작하면 보유한 모든 메모리가 해제되지만 프로덕션 환경에서는 실행 가능한 솔루션이 아닙니다.
T-SQL 만 사용하여 SQL Server 2005에서 숫자가 아닌 문자를 문자열에서 제거하는 방법이 있습니까?