다음을 통해 공유


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

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW) Microsoft Fabric의 SQL 분석 엔드포인트 Microsoft Fabric의 웨어하우스

Microsoft SQL Server 데이터베이스 엔진에서 발생한 오류에는 다음 표에 설명된 특성이 있습니다.

특성 설명
오류 번호 각 오류 메시지에는 고유한 오류 번호가 있습니다.
오류 메시지 문자열 오류 메시지에는 오류의 원인에 대한 진단 정보가 포함되어 있습니다. 많은 오류 메시지에는 오류를 생성하는 개체의 이름과 같은 정보가 삽입되는 대체 변수가 있습니다.
심각도 심각도는 오류가 얼마나 심각한지를 나타냅니다. 심각도가 낮은 오류(심각도가 1 또는 2인 경우)는 정보 메시지이거나 하위 수준 경고이며 심각도가 높은 오류는 가능한 한 빨리 해결해야 하는 문제를 나타냅니다. 심각도에 대한 자세한 내용은 데이터베이스 엔진 오류 심각도를 참조하세요.
State(상태) 일부 오류 메시지는 데이터베이스 엔진 코드의 여러 곳에서 발생할 수 있습니다. 예를 들어 1105 오류는 여러 가지 다른 상황에서 발생합니다. 오류를 발생시키는 특정 조건은 각각 고유한 상태 코드를 할당합니다.

Microsoft 기술 자료와 같이 알려진 문제에 대한 정보를 포함하는 데이터베이스를 확인하는 경우 상태 번호를 사용하여 기록된 문제가 실제로 발생한 오류와 동일한지 여부를 확인할 수 있습니다. 예를 들어 기술 자료 문서에서 상태가 2인 1105 오류에 대해 설명하는데 실제로 발생한 1105 오류 메시지의 상태가 3인 경우 이 오류가 기술 자료 문서에 보고된 것과 다른 원인에서 비롯되었을 가능성이 높습니다.

Microsoft 지원 엔지니어는 오류의 상태 코드를 사용하여 해당 오류 코드가 발생한 위치를 소스 코드에서 찾을 수도 있습니다. 이 정보는 문제를 진단하는 방법에 대한 추가 아이디어를 제공할 수 있습니다.
프로시저 이름 오류가 발생한 저장 프로시저 또는 트리거의 이름입니다.
줄 번호 일괄 처리, 저장 프로시저, 트리거 또는 함수에서 오류를 생성한 문을 나타냅니다.

데이터베이스 엔진 인스턴스의 모든 시스템 및 사용자 정의 오류 메시지는 sys.messages 카탈로그 뷰에 포함되어 있습니다. RAISERROR 문을 사용하여 애플리케이션에 사용자 정의 오류를 반환할 수 있습니다.

Microsoft .NET 프레임워크 SQLClient 네임스페이스, ADO(ActiveX Data Objects), OLE DB 및 ODBC(Open Database Connectivity)를 비롯한 모든 데이터베이스 API는 기본 오류 특성을 보고합니다. 이 정보에는 오류 번호 및 메시지 문자열이 포함됩니다. 그러나 모든 API가 다른 모든 오류 특성을 보고하는 것은 아닙니다.

TRY...CATCH 구문의 TRY 블록 범위 내에서 발생하는 오류에 대한 정보는 관련 CATCH 블록 범위 내에서 ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY, ERROR_STATE와 같은 함수를 사용하여 Transact-SQL 코드에서 얻을 수 있습니다. 자세한 내용은 TRY...CATCH(Transact-SQL)를 참조하세요.

예제

다음 예에서는 영문 텍스트(1033)가 포함된 데이터베이스 엔진의 모든 시스템 및 사용자 정의 오류 메시지 목록을 반환하기 위해 sys.messages 카탈로그 뷰를 쿼리합니다.

SELECT  
    message_id,  
    language_id,  
    severity,  
    is_event_logged,  
    text  
  FROM sys.messages  
  WHERE language_id = 1033;  

자세한 내용은 sys.messages(Transact-SQL)를 참조하세요.

참고 항목

sys.messages(Transact-SQL)
RAISERROR(Transact-SQL)
@@ERROR(Transact-SQL)
TRY...CATCH(Transact-SQL)
ERROR_LINE(Transact-SQL)
ERROR_MESSAGE(Transact-SQL)
ERROR_NUMBER(Transact-SQL)
ERROR_PROCEDURE(Transact-SQL)
ERROR_SEVERITY(Transact-SQL)
ERROR_STATE(Transact-SQL)