데이터베이스 엔진 오류 이해Understanding Database Engine Errors

MicrosoftMicrosoft SQL Server 데이터베이스 엔진SQL Server Database Engine 에서 발생한 오류에는 다음 표에 설명된 것과 같은 특성이 있습니다.Errors raised by the MicrosoftMicrosoft SQL Server 데이터베이스 엔진SQL Server Database Engine have the attributes described in the following table.

AttributeAttribute 설명Description
오류 번호Error number 모든 오류 메시지에는 고유한 오류 번호가 있습니다.Each error message has a unique error number.
오류 메시지 문자열Error message string 오류 메시지에는 오류 발생 원인에 대한 진단 정보가 포함됩니다.The error message contains diagnostic information about the cause of the error. 많은 오류 메시지에는 오류를 발생시킨 개체 이름과 같은 정보가 포함된 대체 변수가 있습니다.Many error messages have substitution variables in which information, such as the name of the object generating the error, is inserted.
SeveritySeverity 오류의 심각도를 나타냅니다.The severity indicates how serious the error is. 심각도가 낮은 오류(심각도가 1 또는 2인 경우)는 정보 메시지이거나 하위 수준 경고이며Errors that have a low severity, such as 1 or 2, are information messages or low-level warnings. 심각도가 높은 오류는 가능한 빨리 해결해야 할 문제를 가리킵니다.Errors that have a high severity indicate problems that should be addressed as soon as possible. 심각도에 대한 자세한 내용은 데이터베이스 엔진 오류 심각도를 참조하세요.For more information about severities, see Database Engine Error Severities.
StateState 일부 오류 메시지는 데이터베이스 엔진Database Engine코드의 여러 곳에서 발생할 수 있습니다.Some error messages can be raised at multiple points in the code for the 데이터베이스 엔진Database Engine. 예를 들어 1105 오류는 여러 가지 다른 조건에서 발생합니다.For example, an 1105 error can be raised for several different conditions. 오류를 발생시키는 각각의 특정 조건마다 고유한 상태 코드를 할당합니다.Each specific condition that raises an error assigns a unique state code.

MicrosoftMicrosoft 기술 자료와 같이 알려진 문제에 대한 정보를 포함하는 데이터베이스를 확인하는 경우 상태 번호를 사용하여 기록된 문제가 실제로 발생한 오류와 동일한지 여부를 확인할 수 있습니다.When you are viewing databases that contain information about known issues, such as the MicrosoftMicrosoft Knowledge Base, you can use the state number to determine whether the recorded issue is the same as the error you have encountered. 예를 들어 기술 자료 문서에서 상태가 2인 1105 오류에 대해 설명하는데 실제로 발생한 1105 오류 메시지의 상태가 3인 경우 이 오류가 기술 자료 문서에 보고된 것과 다른 원인에서 비롯되었을 가능성이 높습니다.For example, if a Knowledge Base Article describes an 1105 error that has a state of 2 and the 1105 error message you received had a state of 3, the error probably has a different cause than the one reported in the article.

MicrosoftMicrosoft 지원 엔지니어도 오류의 상태 코드를 사용하여 원본 코드에서 해당 오류 코드가 발생한 위치를 찾을 수 있습니다.A MicrosoftMicrosoft support engineer can also use the state code from an error to find the location in the source code where that error code is being raised. 이 정보는 문제 진단에 도움이 될 수 있습니다.This information might provide additional ideas on how to diagnose the problem.
프로시저 이름Procedure name 오류가 발생한 저장 프로시저 또는 트리거의 이름입니다.Is the name of the stored procedure or trigger in which the error has occurred.
줄 번호Line number 일괄 처리, 저장 프로시저, 트리거 또는 함수에서 오류를 발생시킨 문을 가리킵니다.Indicates which statement in a batch, stored procedure, trigger, or function generated the error.

데이터베이스 엔진Database Engine 인스턴스의 모든 시스템 및 사용자 정의 오류 메시지는 sys.messages 카탈로그 뷰에 포함되어 있습니다.All system and user-defined error messages in an instance of the 데이터베이스 엔진Database Engine are contained in the sys.messages catalog view. RAISERROR 문을 사용하여 응용 프로그램에 사용자 정의 오류를 반환할 수 있습니다.You can use the RAISERROR statement to return user-defined errors to an application.

MicrosoftMicrosoft .NET Framework.NET Framework SQLClient 네임스페이스, ADO(ActiveX Data Objects), OLE DB 및 ODBC(Open Database Connectivity)를 비롯한 모든 데이터베이스 API는 기본 오류 특성을 보고합니다.All database APIs, such as the MicrosoftMicrosoft .NET Framework.NET Framework SQLClient namespace, ActiveX Data Objects (ADO), OLE DB, and Open Database Connectivity (ODBC), report the basic error attributes. 이 정보에는 오류 번호와 메시지 문자열이 포함됩니다.This information includes the error number and message string. 그러나 일부 API는 일부 오류 특성을 보고하지 않을 수 있습니다.However, not all the APIs report all the other error attributes.

TRY...CATCH 구문의 TRY 블록 범위 내에서 발생하는 오류에 대한 정보는 Transact-SQLTransact-SQL 코드의 관련 CATCH 블록 범위 내에서 ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY 및 ERROR_STATE와 같은 함수를 사용하여 얻을 수 있습니다.Information about an error that occurs in the scope of the TRY block of a TRY…CATCH construct can be obtained in Transact-SQLTransact-SQL code by using functions such as ERROR_LINE, ERROR_MESSAGE, ERROR_NUMBER, ERROR_PROCEDURE, ERROR_SEVERITY, and ERROR_STATE in the scope of the associated CATCH block. 자세한 내용은 TRY...CATCH(Transact-SQL)를 참조하세요.For more information, see TRY...CATCH (Transact-SQL).

Examples

다음 예에서는 영문( sys.messages ) 텍스트가 포함된 데이터베이스 엔진Database Engine 의 모든 시스템 및 사용자 정의 오류 메시지 목록을 반환하기 위해1033카탈로그 뷰를 쿼리합니다.The following example queries the sys.messages catalog view to return a list of all system and user-defined error messages in the 데이터베이스 엔진Database Engine that have English text (1033).

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

자세한 내용은 sys.messages(Transact-SQL)를 참조하세요.For more information, see sys.messages (Transact-SQL).

참고 항목See Also

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