Skip to main content

TRY ... CATCH를 사용하여 SQL Server 오류 처리

How to Install Hadoop on Windows (유월 2025)

How to Install Hadoop on Windows (유월 2025)
Anonim

Transact-SQL의 TRY … CATCH 문은 데이터베이스 응용 프로그램의 오류 조건을 감지하고 처리합니다. 이 문은 SQL Server 오류 처리의 초석이며 강력한 데이터베이스 응용 프로그램 개발의 중요한 부분입니다. TRY … CATCH는 2008, Azure SQL 데이터베이스, Azure SQL 데이터웨어 하우스 및 병렬 데이터웨어 하우스로 시작하는 SQL Server에 적용됩니다.

TRY 소개 … 캐치

TRY … CATCH는 두 가지 Transact-SQL 문을 지정할 수있게하여 작동합니다. 하나는 "시도"하고 다른 하나는 발생할 수있는 오류를 "catch"하는 데 사용합니다. SQL Server가 TRY … CATCH 문을 발견하면 TRY 절에 포함 된 문을 즉시 실행합니다. TRY 문이 성공적으로 실행되면 SQL Server가 계속 실행됩니다. 그러나 TRY 문에서 오류가 발생하면 SQL Server는 오류를 정상적으로 처리하기 위해 CATCH 문을 실행합니다.

기본 구문은 다음 형식을 취합니다.

시작하기 명령문 블록 END TRY시작 캐치sql_statement종착역 ;

TRY … CATCH 예제

예제를 통해이 문장의 사용을 이해하는 것은 쉽습니다. 조직의 각 직원에 대한 정보가 들어있는 "Employees"라는 테이블이 포함 된 인사 데이터베이스의 관리자라고 가정 해보십시오. 이 테이블은 정수 직원 ID 번호를 기본 키로 사용합니다. 아래 설명을 사용하여 새 직원을 데이터베이스에 삽입하려고 시도 할 수 있습니다.

INSERT INTO 직원 (id, first_name, last_name, extension)VALUES (12497, 'Mike', 'Chapple', 4201)

정상적인 상황에서이 명령문은 Employees 테이블에 행을 추가합니다. 그러나 ID 12497의 직원이 데이터베이스에 이미 존재하는 경우 행을 삽입하면 기본 키 제약 조건을 위반하게되고 다음과 같은 오류가 발생합니다.

메시지 2627, 수준 14, 상태 1, 줄 1PRIMARY KEY 제약 조건 'PK_employee_id'을 위반했습니다. 'dbo.employees'개체에 중복 키를 삽입 할 수 없습니다.그 진술서는 만료되었습니다.

이 오류는 문제를 해결하는 데 필요한 정보를 제공하지만 두 가지 문제가 있습니다. 첫째, 메시지는 비밀 스럽습니다. 여기에는 평균 사용자가 이해할 수없는 오류 코드, 행 번호 및 기타 정보가 포함됩니다. 둘째, 더 중요한 것은 명령문이 중단되고 응용 프로그램이 중단 될 수 있다는 것입니다.다른 방법은 다음과 같이 TRY … CATCH 문에 명령문을 래핑하는 것입니다.

시작하기INSERT INTO 직원 (id, first_name, last_name, extension)VALUES (12497, 'Mike', 'Chapple', 4201)END TRY시작 캐치PRINT 'ERROR :'+ ERROR_MESSAGE ();EXEC msdb.dbo.sp_send_dbmail@profile_name = '직원 메일',@recipients = '[email protected]',@body = '새 직원 기록을 만드는 중에 오류가 발생했습니다.',@ 제목 = '직원 ID 중복 오류';종착역

이 예에서 발생하는 모든 오류는 명령을 실행하는 사용자와 [email protected] 전자 메일 주소로보고됩니다. 사용자에게 표시되는 오류는 다음과 같습니다.

오류 : PRIMARY KEY 제약 조건 'PK_employee_id'위반 'dbo.employees'개체에 중복 키를 삽입 할 수 없습니다.메일이 대기 중입니다.

응용 프로그램 실행은 정상적으로 계속되어 프로그래머가 오류를 처리 할 수 ​​있습니다. TRY … CATCH 문을 사용하면 SQL Server 데이터베이스 응용 프로그램에서 발생하는 오류를 사전에 감지하고 처리 할 수 ​​있습니다.

더 배우기

구조화 된 쿼리 언어에 대해 더 자세히 알고 싶다면 Introduction to SQL을 참조하십시오.