데이터베이스 엔진 오류 심각도Database Engine Error Severities

SQL Server 데이터베이스 엔진SQL Server Database Engine에서 오류가 발생한 경우 오류 심각도는 SQL ServerSQL Server에서 발견된 문제의 유형을 나타냅니다.When an error is raised by the SQL Server 데이터베이스 엔진SQL Server Database Engine, the severity of the error indicates the type of problem encountered by SQL ServerSQL Server.

심각도Levels of Severity

다음 표에서는 SQL Server 데이터베이스 엔진SQL Server Database Engine에서 발생하는 오류의 심각도를 나열하고 그 내용을 설명합니다.The following table lists and describes the severity levels of the errors raised by the SQL Server 데이터베이스 엔진SQL Server Database Engine.

심각도Severity level 설명Description
0-90-9 상태 정보를 반환하거나 심각하지 않은 오류를 보고하는 정보 메시지입니다.Informational messages that return status information or report errors that are not severe. 데이터베이스 엔진Database Engine 에서는 심각도가 0 ~ 9인 경우 시스템 오류를 발생시키지 않습니다.The 데이터베이스 엔진Database Engine does not raise system errors with severities of 0 through 9.
1010 상태 정보를 반환하거나 심각하지 않은 오류를 보고하는 정보 메시지입니다.Informational messages that return status information or report errors that are not severe. 데이터베이스 엔진Database Engine 에서는 호환성을 위해 오류 정보를 호출 응용 프로그램으로 반환하기 전에 심각도 10을 심각도 0으로 변환합니다.For compatibility reasons, the 데이터베이스 엔진Database Engine converts severity 10 to severity 0 before returning the error information to the calling application.
11-1611-16 사용자가 해결할 수 있는 오류를 나타냅니다.Indicate errors that can be corrected by the user.
1111 지정한 개체 또는 엔터티가 없음을 나타냅니다.Indicates that the given object or entity does not exist.
1212 특수한 쿼리 힌트로 인해 잠금을 사용하지 않는 쿼리에 대한 특수 심각도입니다.A special severity for queries that do not use locking because of special query hints. 일관성을 유지하는 기능인 잠금을 사용하지 않는 이러한 문으로 읽기 작업을 수행하면 데이터 일관성이 손상될 수 있습니다.In some cases, read operations performed by these statements could result in inconsistent data, since locks are not taken to guarantee consistency.
1313 트랜잭션 교착 상태 오류를 나타냅니다.Indicates transaction deadlock errors.
1414 거부된 권한 등의 보안 관련 오류를 나타냅니다.Indicates security-related errors, such as permission denied.
1515 Transact-SQLTransact-SQL 명령의 구문 오류를 나타냅니다.Indicates syntax errors in the Transact-SQLTransact-SQL command.
1616 사용자가 해결할 수 있는 일반 오류를 나타냅니다.Indicates general errors that can be corrected by the user.
17-1917-19 사용자가 해결할 수 없는 소프트웨어 오류를 나타냅니다.Indicate software errors that cannot be corrected by the user. 문제를 시스템 관리자에게 알립니다.Inform your system administrator of the problem.
1717 문이 실행되어 SQL ServerSQL Server 에서 데이터베이스에 사용되는 디스크 공간, 메모리 또는 잠금 등의 리소스가 부족하게 되거나 시스템 관리자가 설정한 일정한 한계를 초과했음을 나타냅니다.Indicates that the statement caused SQL ServerSQL Server to run out of resources (such as memory, locks, or disk space for the database) or to exceed some limit set by the system administrator.
1818 데이터베이스 엔진Database Engine 소프트웨어에 문제가 있지만 문이 완료되고 데이터베이스 엔진Database Engine 인스턴스에 대한 연결이 유지됨을 나타냅니다.Indicates a problem in the 데이터베이스 엔진Database Engine software, but the statement completes execution, and the connection to the instance of the 데이터베이스 엔진Database Engine is maintained. 심각도가 18인 메시지가 발생하면 시스템 관리자에게 알려야 합니다.The system administrator should be informed every time a message with a severity level of 18 occurs.
1919 구성할 수 없는 데이터베이스 엔진Database Engine 한계를 초과하여 현재 일괄 처리가 종료되었음을 나타냅니다.Indicates that a nonconfigurable 데이터베이스 엔진Database Engine limit has been exceeded and the current batch process has been terminated. 심각도가 19 이상인 오류 메시지는 현재 일괄 처리의 실행을 중지합니다.Error messages with a severity level of 19 or higher stop the execution of the current batch. 심각도가 19인 오류는 거의 발생하지 않습니다. 그러나 이 오류가 발생하면 시스템 관리자 또는 주 지원 공급자를 통해 해결해야 합니다.Severity level 19 errors are rare and must be corrected by the system administrator or your primary support provider. 심각도가 19인 메시지가 발생하면 시스템 관리자에게 문의합니다.Contact your system administrator when a message with a severity level 19 is raised. 심각도가 19부터 25인 오류 메시지는 오류 로그에 기록됩니다.Error messages with a severity level from 19 through 25 are written to the error log.
20-2420-24 시스템 문제 및 심각한 오류를 나타냅니다. 즉 문 또는 일괄 처리를 실행하는 데이터베이스 엔진Database Engine 태스크가 더 이상 수행되지 않습니다.Indicate system problems and are fatal errors, which means that the 데이터베이스 엔진Database Engine task that is executing a statement or batch is no longer running. 태스크는 발생한 문제에 대한 정보를 기록한 다음 종료됩니다.The task records information about what occurred and then terminates. 대부분의 경우 데이터베이스 엔진Database Engine 인스턴스와 응용 프로그램과의 연결도 끊어집니다.In most cases, the application connection to the instance of the 데이터베이스 엔진Database Engine may also terminate. 이 경우 문제에 따라 다를 수 있지만 응용 프로그램에서 다시 연결하지 못합니다.If this happens, depending on the problem, the application might not be able to reconnect.

이 범위의 오류 메시지는 동일한 데이터베이스의 데이터에 액세스하는 모든 프로세스에 영향을 미칠 수 있고 데이터베이스 또는 개체가 손상되었음을 나타내기도 합니다.Error messages in this range can affect all of the processes accessing data in the same database and may indicate that a database or object is damaged. 심각도가 19부터 25인 오류 메시지는 오류 로그에 기록됩니다.Error messages with a severity level from 19 through 24 are written to the error log.
2020 문에 문제가 발생했음을 나타냅니다.Indicates that a statement has encountered a problem. 발생한 문제는 현재 태스크에만 영향을 주므로 데이터베이스 자체는 손상되지 않습니다.Because the problem has affected only the current task, it is unlikely that the database itself has been damaged.
2121 현재 데이터베이스의 모든 태스크에 영향을 미치는 문제가 발생했음을 나타냅니다. 그러나 데이터베이스 자체는 손상되지 않습니다.Indicates that a problem has been encountered that affects all tasks in the current database, but it is unlikely that the database itself has been damaged.
2222 메시지에서 지정된 테이블 또는 인덱스가 소프트웨어 또는 하드웨어 문제로 인해 손상되었음을 나타냅니다.Indicates that the table or index specified in the message has been damaged by a software or hardware problem.

심각도가 22인 오류는 거의 발생하지 않습니다.Severity level 22 errors occur rarely. 그러나 이 오류가 발생한 경우 DBCC CHECKDB를 실행하여 데이터베이스 내의 다른 개체도 손상되었는지 확인해야 합니다.If one occurs, run DBCC CHECKDB to determine whether other objects in the database are also damaged. 문제가 버퍼 캐시에 한정되고 디스크 자체에는 아무 이상이 없을 수도 있습니다.The problem might be in the buffer cache only and not on the disk itself. 그럴 경우 데이터베이스 엔진Database Engine 인스턴스를 다시 시작하면 문제가 해결됩니다.If so, restarting the instance of the 데이터베이스 엔진Database Engine corrects the problem. 작업을 계속하려면 데이터베이스 엔진Database Engine인스턴스에 다시 연결해야 합니다. 그렇지 않으면 DBCC를 사용하여 문제를 해결할 수 있습니다.To continue working, you must reconnect to the instance of the 데이터베이스 엔진Database Engine; otherwise, use DBCC to repair the problem. 경우에 따라 데이터베이스를 복원해야 할 수도 있습니다.In some cases, you may have to restore the database.

데이터베이스 엔진Database Engine 인스턴스를 다시 시작해도 문제가 해결되지 않는다면 디스크의 문제입니다.If restarting the instance of the 데이터베이스 엔진Database Engine does not correct the problem, then the problem is on the disk. 가끔 오류 메시지에 지정된 개체를 제거하여 문제를 해결할 수도 있습니다.Sometimes destroying the object specified in the error message can solve the problem. 예를 들어 데이터베이스 엔진Database Engine 인스턴스가 비클러스터형 인덱스에서 길이가 0인 행을 발견했다는 메시지가 표시되면 해당 인덱스를 삭제하고 다시 작성합니다.For example, if the message reports that the instance of the 데이터베이스 엔진Database Engine has found a row with a length of 0 in a nonclustered index, delete the index and rebuild it.
2323 하드웨어 또는 소프트웨어 문제로 인해 전체 데이터베이스의 무결성이 의심된다는 것을 나타냅니다.Indicates that the integrity of the entire database is in question because of a hardware or software problem.

심각도가 23인 오류는 거의 발생하지 않습니다.Severity level 23 errors occur rarely. 그러나 이 오류가 발생한 경우 DBCC CHECKDB를 실행하여 손상된 범위를 확인해야 합니다.If one occurs, run DBCC CHECKDB to determine the extent of the damage. 문제가 캐시에 한정되고 디스크 자체에는 아무 이상이 없을 수도 있습니다.The problem might be in the cache only and not on the disk itself. 그럴 경우 데이터베이스 엔진Database Engine 인스턴스를 다시 시작하면 문제가 해결됩니다.If so, restarting the instance of the 데이터베이스 엔진Database Engine corrects the problem. 작업을 계속하려면 데이터베이스 엔진Database Engine인스턴스에 다시 연결해야 합니다. 그렇지 않으면 DBCC를 사용하여 문제를 해결할 수 있습니다.To continue working, you must reconnect to the instance of the 데이터베이스 엔진Database Engine; otherwise, use DBCC to repair the problem. 경우에 따라 데이터베이스를 복원해야 할 수도 있습니다.In some cases, you may have to restore the database.
2424 미디어 오류를 나타냅니다.Indicates a media failure. 시스템 관리자가 데이터베이스를 복원해야 할 수도 있습니다.The system administrator may have to restore the database. 또는 하드웨어 공급업체에 문의해야 할 경우도 있습니다.You may also have to call your hardware vendor.

사용자 정의 오류 메시지 심각도User-Defined Error Message Severity

sp_addmessage 를 사용하여 심각도가 1부터 25까지의 사용자 정의 오류 메시지를 sys.messages 카탈로그 뷰에 추가할 수 있습니다.sp_addmessage can be used to add user-defined error messages with severities from 1 through 25 to the sys.messages catalog view. 이 사용자 정의 오류 메시지는 RAISERROR에서 사용될 수 있습니다.These user-defined error messages can be used by RAISERROR. 자세한 내용은 sp_addmessage(Transact-SQL)을 참조하세요.For more information, see sp_addmessage (Transact-SQL).

RAISERROR는 심각도가 1부터 25까지의 사용자 정의 오류 메시지를 생성하는 데 사용될 수 있습니다.RAISERROR can be used to generate user-defined error messages with severities from 1 through 25. RAISERROR는 sys.messages 카탈로그 뷰에 저장된 사용자 정의 오류 메시지를 참조하거나 동적으로 메시지를 작성할 수 있습니다.RAISERROR can reference a user-defined error message stored in the sys.messages catalog view or build a message dynamically. 오류 발생 시 sys.messages의 사용자 정의 오류 메시지를 사용하면 RAISERROR에서 지정한 심각도가 sys.messages에 지정된 심각도 대신 사용됩니다.When using the user-defined error message in sys.messages while generating an error, the severity specified by RAISERROR overrides the severity specified in sys.messages. 자세한 내용은 RAISERROR(Transact-SQL)를 참조하세요.For more information, see RAISERROR (Transact-SQL).

오류 심각도 및 TRY…CATCHError Severity and TRY…CATCH

TRY…CATCH 구문은 심각도가 10을 넘으며 데이터베이스 연결을 끊지 않는 모든 실행 오류를 catch합니다.A TRY…CATCH construct catches all execution errors with severity greater than 10 that do not terminate the database connection.

심각도가 0부터 10까지인 오류는 정보 메시지이며 TRY…CATCH 구문의 CATCH 블록에서 점프하지 않습니다.Errors with severity from 0 through 10 are informational messages and do not cause execution to jump from the CATCH block of a TRY…CATCH construct.

연결이 종료되면 실행이 중단되기 때문에 일반적으로 심각도가 20부터 25까지이며 데이터베이스 연결을 종료하는 오류는 CATCH 블록에서 처리되지 않습니다.Errors that terminate the database connection, usually with severity from 20 through 25, are not handled by the CATCH block because execution is aborted when the connection terminates.

자세한 내용은 TRY...CATCH(Transact-SQL)에서 발견된 문제의 유형을 나타냅니다.For more information, see TRY...CATCH (Transact-SQL).

오류 심각도 검색Retrieving Error Severity

ERROR_SEVERITY 시스템 함수를 사용하여 TRY…CATCH 구문의 CATCH 블록을 실행했던 오류 심각도를 검색할 수 있습니다.The ERROR_SEVERITY system function can be used to retrieve the severity of the error that caused the CATCH block of a TRY…CATCH construct to be run. CATCH 블록의 범위를 벗어나 호출한 경우 ERROR_SEVERITY는 NULL을 반환합니다.ERROR_SEVERITY returns NULL if called outside the scope of a CATCH block. 자세한 내용은 ERROR_SEVERITY(Transact-SQL)를 참조하세요.For more information, see ERROR_SEVERITY (Transact-SQL).

관련 항목:See Also

데이터베이스 엔진 오류 이해 Understanding Database Engine Errors
sys.messages(Transact-SQL) sys.messages (Transact-SQL)
시스템 함수(Transact-SQL) System Functions (Transact-SQL)
TRY...CATCH(Transact-SQL)TRY...CATCH (Transact-SQL)