데이터베이스 엔진 오류 처리

SQL Server 데이터베이스 엔진에서 발생하는 많은 오류를 프로그래밍 방식으로 캡처하고 해결할 수 있습니다. 응용 프로그램에서 데이터베이스 엔진에 저장된 데이터에 액세스하는 데 사용하는 데이터 액세스 API(응용 프로그래밍 인터페이스)와 Transact-SQL언어에서 오류 처리 기능을 제공합니다.

데이터베이스 엔진의 오류는 다음 두 가지 수준으로 처리할 수 있습니다.

  • Transact-SQL 일괄 처리, 저장 프로시저, 트리거 또는 사용자 정의 함수에 오류 처리 코드를 추가하여 데이터베이스 엔진에서 오류를 처리할 수 있습니다. Transact-SQL 오류 처리 메커니즘에는 TRY…CATCH 구문, RAISERROR 문 및 @@ERROR 함수가 포함됩니다. TRY…CATCH 구문에 대한 자세한 내용은 TRY...CATCH(Transact-SQL)를 참조하십시오.
  • 오류를 호출 응용 프로그램으로 반환하여 해당 응용 프로그램 코드에서 처리할 수 있습니다. 응용 프로그램에서 데이터베이스 엔진에 액세스하는 데 사용하는 각 API는 응용 프로그램으로 오류 정보를 전달하기 위한 메커니즘을 제공합니다.
항목 설명

데이터베이스 엔진 오류 이해

모든 데이터베이스 엔진 오류에는 오류 번호, 메시지 문자열, 심각도, 상태, 프로시저 이름, 줄 번호 등의 특성이 포함됩니다.

Transact-SQL의 오류 정보 검색

Transact-SQL 코드는 ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY, ERROR_STATE 및 @@ERROR 함수를 사용하여 오류에 대한 정보를 검색할 수 있습니다.

Transact-SQL에서 TRY...CATCH 사용

SQL Server 2005에는 Microsoft Visual C++ 및 Visual C# 언어의 예외 처리 기능과 유사한 TRY…CATCH 구문을 사용하여 Transact-SQL 코드에서 오류를 처리하는 기능이 도입되었습니다. TRY 블록에서 오류 조건이 검색되면 이를 처리할 수 있는 CATCH 블록으로 제어권이 넘어갑니다. 이것이 SQL Server 2005 데이터베이스 엔진 오류 처리의 기본 메커니즘입니다.

RAISERROR 사용

RAISERROR 문을 사용하여 사용자 정의 오류를 발생시킬 수 있습니다. CATCH 블록에서 RAISERROR 문을 사용하여 CATCH 블록에서 처리되는 응용 프로그램 오류로 이동할 수도 있습니다.

PRINT 사용

PRINT 문을 사용하여 응용 프로그램에 사용자 정의 메시지를 반환할 수 있습니다.

@@ERROR 사용

이전 버전의 SQL Server에서는 @@ERROR 함수가 Transact-SQL 문에서 오류를 검색하는 주요 수단입니다. TRY…CATCH 구문은 향상된 기능을 제공합니다.

응용 프로그램 오류 및 메시지 처리

ADO(ActiveX Data Objects), OLE DB, ODBC(Open Database Connectivity) 등의 각 데이터 액세스 API에는 데이터베이스 엔진에서 받은 오류 정보를 응용 프로그램에 보고하기 위한 메커니즘이 있습니다.

데이터베이스 엔진 오류 심각도

데이터베이스 엔진 오류와 사용자 정의 오류 메시지의 심각도는 1에서 25 사이입니다. sp_addmessage와 RAISERROR로 사용자 정의 오류 메시지를 생성할 수 있습니다.

참고 항목

관련 자료

sys.messages(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기