오류 구성과 포착 불가 오류

SQL Server에서의 트랜잭션과 오류 처리

Miriam Antona

Software Engineer

오류 구성

INSERT INTO products (product_name, stock, price)
    VALUES ('Trek Powerfly 5 - 2018', 10, 3499.99);
Msg 2627, Level 14, State 1, Line 1
Violation of UNIQUE KEY constraint 'unique_name'. 
Cannot insert duplicate key in object 'dbo.products'. 
The duplicate key value is (Trek Powerfly 5 - 2018).
SQL Server에서의 트랜잭션과 오류 처리

오류 구성

오류 번호

오류 번호에 해당하는 "Msg 2627" 텍스트를 강조한 오류 메시지.

  • SQL 오류: 1–49999
  • 사용자 정의 오류: 50001부터
    select * from sys.messages
| message_id | language_id | severity | ... | text                                                            |
|------------|-------------|----------|-----|-----------------------------------------------------------------|
| ...        | ...         | ...      | ... | ...                                                             |
| 2627       | 1033        | 14       | ... | Violation of %ls constraint '%.*ls'. Cannot insert duplicate... |
| ...        | ...         | ...      | ... | ...                                                             |
SQL Server에서의 트랜잭션과 오류 처리

오류 구성

심각도 레벨

오류의 심각도 레벨에 해당하는 "Level 14" 텍스트를 강조한 오류 메시지.

  • 0–10: 정보성 메시지
  • 11–16: 사용자가 수정 가능한 오류(제약 조건 위반 등)
  • 17–24: 기타 오류(소프트웨어 문제, 치명적 오류)
SQL Server에서의 트랜잭션과 오류 처리

오류 구성

상태(State)

오류의 상태에 해당하는 "State 1" 텍스트를 강조한 오류 메시지.

  • 1: SQL Server가 표시한 오류
  • 0–255: 사용자 정의 오류
SQL Server에서의 트랜잭션과 오류 처리

오류 구성

라인(Line)

오류가 발생한 줄에 해당하는 "Line 1" 텍스트를 강조한 오류 메시지.

프로시저

오류가 발생한 저장 프로시저 이름 "Procedure Insert_product" 텍스트를 강조한 오류 메시지.

SQL Server에서의 트랜잭션과 오류 처리

포착 불가 오류

  • 심각도 11 미만 (11–19는 포착 가능)

  • 연결을 중단하는 심각도 20 이상

  • 컴파일 오류: 존재하지 않는 개체와 열

SQL Server에서의 트랜잭션과 오류 처리

포착 불가 오류 - 컴파일 오류 예시

BEGIN TRY
    SELECT non_existent_column FROM products;
END TRY
BEGIN CATCH
    SELECT 'You are in the CATCH block' AS message;
END CATCH
Msg 207, Level 16, State 1, Line 2
Invalid column name 'non_existent_column'.
SQL Server에서의 트랜잭션과 오류 처리

연습해 봅시다!

SQL Server에서의 트랜잭션과 오류 처리

Preparing Video For Download...