50000: Custom error raised with RAISERROR (RAISERROR로 발생시킨 사용자 정의 오류)
SQL Server의미
메시지 ID를 지정하지 않고 RAISERROR로 발생시킨 사용자 정의 오류의 기본 번호(50000)이다. 애플리케이션/프로시저 로직이 의도적으로 오류를 발생시켰다.
원인
비즈니스 규칙 위반, 유효성 검사 실패, 의도적인 흐름 제어 또는 사용자 정의 예외 메시지를 위해 저장 프로시저나 스크립트에서 RAISERROR 또는 THROW로 발생시킨 사용자 정의 오류.
해결 방법
RAISERROR/THROW 메시지 텍스트를 읽어 실제 비즈니스 규칙 위반을 파악한다. 애플리케이션 측에서 TRY...CATCH로 이 오류를 잡고 ERROR_MESSAGE()/ERROR_NUMBER()로 세부 정보를 얻는다. sp_addmessage로 메시지를 정의하여 사용자 정의 오류에 의미 있는 번호를 부여한다. 비즈니스 로직에서 원인 조건을 수정한다.
같은 데이터베이스의 다른 항목
- 4104The multi-part identifier could not be bound (다중 부분 식별자를 바인딩할 수 없음)
- 2714There is already an object named in the database (데이터베이스에 같은 이름의 개체가 이미 있음)
- 601Could not continue scan with NOLOCK due to data movement (데이터 이동으로 NOLOCK 스캔을 계속할 수 없음)
- 3902The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION (대응하는 BEGIN TRANSACTION이 없는 COMMIT TRANSACTION)
- 1101Could not allocate a new page because of insufficient disk space in filegroup (파일 그룹의 디스크 공간 부족으로 새 페이지를 할당할 수 없음)
- 3729Cannot DROP because it is being referenced by object (객체가 참조 중이어서 DROP 불가)
- 3961Snapshot isolation transaction failed because the object was modified by a DDL statement (객체가 DDL로 변경되어 스냅샷 격리 트랜잭션 실패)