sp_add_alert(Transact-SQL)

적용 대상:SQL Server

경고를 만듭니다.

Transact-SQL 구문 표기 규칙

구문

sp_add_alert [ @name = ] N'name'
     [ , [ @message_id = ] message_id ]
     [ , [ @severity = ] severity ]
     [ , [ @enabled = ] enabled ]
     [ , [ @delay_between_responses = ] delay_between_responses ]
     [ , [ @notification_message = ] N'notification_message' ]
     [ , [ @include_event_description_in = ] include_event_description_in ]
     [ , [ @database_name = ] N'database_name' ]
     [ , [ @event_description_keyword = ] N'event_description_keyword' ]
     [ , { [ @job_id = ] job_id | [ @job_name = ] N'job_name' } ]
     [ , [ @raise_snmp_trap = ] raise_snmp_trap ]
     [ , [ @performance_condition = ] N'performance_condition' ]
     [ , [ @category_name = ] N'category_name' ]
     [ , [ @wmi_namespace = ] N'wmi_namespace' ]
     [ , [ @wmi_query = ] N'wmi_query' ]
[ ; ]

인수

[ @name = ] N'name'

경고의 명칭. 이 이름은 경고에 대한 응답으로 전송된 전자 메일 또는 호출기 메시지에 나타납니다. 고유해야 하며 백분율(%) 문자를 포함할 수 있습니다. @name 기본값이 없는 sysname입니다.

[ @message_id = ] message_id

경고를 정의하는 메시지 오류 번호입니다. (일반적으로 테이블의 오류 번호에 sysmessages 해당합니다.) @message_id int이며 기본값은 .입니다0. @severity 사용하여 경고를 정의하는 경우 @message_id 합니다 0NULL.

Microsoft Windows 애플리케이션 로그에 기록된 오류만 sysmessages 경고를 보낼 수 있습니다.

[ @severity = ] 심각도

경고를 정의하는 심각도 수준(처음부터 125끝까지)입니다. @severity 기본값0인 int입니다. 표시된 심각도를 사용하여 Microsoft Windows 애플리케이션 로그로 전송된 테이블에 저장된 sysmessages 모든 SQL Server 메시지는 경고를 전송합니다. 경고를 정의하는 데 @message_id 사용되는 경우 @severity .0

[ @enabled = ] 사용

경고의 현재 상태 나타냅니다. @enabled 기본값 1 (사용)을 사용하여 tinyint입니다. 이 경우 0경고가 활성화되지 않고 실행되지 않습니다.

[ @delay_between_responses = ] delay_between_responses

경고에 대한 응답 사이의 대기 기간(초)입니다. @delay_between_responses 기본값0인 int입니다. 즉, 응답 사이에 대기가 없음을 의미합니다(경고가 발생할 때마다 응답이 생성됨). 응답은 다음 형식 중 하나 또는 둘 다에 있을 수 있습니다.

  • 전자 메일 또는 호출기를 통해 보낸 하나 이상의 알림
  • 실행할 작업

이 값을 설정하면 경고가 짧은 시간 안에 반복적으로 발생할 때 원치 않는 전자 메일 메시지가 전송되지 않도록 방지할 수 있습니다.

[ @notification_message = ] N'notification_message'

전자 메일 net send또는 호출기 알림의 일부로 운영자에게 보낸 선택적 추가 메시지입니다. @notification_message 기본값NULL인 nvarchar(512)입니다. @notification_message 지정하면 수정 프로시저와 같은 특수 노트를 추가하는 데 유용합니다.

[ @include_event_description_in = ] include_event_description_in

SQL Server 오류에 대한 설명을 알림 메시지의 일부로 포함해야 하는지 여부입니다. @include_event_description_in 기본값 5 (전자 메일 및 )이 있는 tinyint이며 net send논리 연산자와 결합된 OR 값 중 하나 이상을 가질 수 있습니다.

Important

호출기 및 net send 옵션은 이후 버전의 SQL Server에서 SQL Server 에이전트 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 말고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요.

설명
0 None
1 이메일
2 호출기
4 net send

[ @database_name = ] N'database_name'

경고가 발생하려면 오류가 발생해야 하는 데이터베이스입니다. @database_name 제공되지 않으면 오류가 발생한 위치에 관계없이 경고가 발생합니다. @database_name sysname이며 기본값은 .입니다NULL. 대괄호([ ])로 묶인 이름은 허용되지 않습니다.

[ @event_description_keyword = ] N'event_description_키워드(keyword)'

오류 메시지 로그의 SQL Server 오류 설명에서 찾아야 하는 문자 시퀀스입니다. @event_description_키워드(keyword) 기본값NULL인 nvarchar(100)입니다. 이 매개 변수는 개체 이름(예 customer_table: )을 필터링하는 데 유용합니다.

참고 항목

Transact-SQL LIKE 식 패턴 일치 문자를 사용할 수 없습니다.

[ @job_id = ] job_id

해당 경고에 대한 응답으로 실행할 작업의 작업 ID입니다. @job_id 기본값NULLuniqueidentifier입니다.

@job_id 또는 @job_name 지정해야 하지만 둘 다 지정할 수는 없습니다.

[ @job_name = ] N'job_name'

이 경고에 대한 응답으로 실행할 작업의 이름입니다. @job_name sysname이며 기본값은 .입니다NULL.

@job_id 또는 @job_name 지정해야 하지만 둘 다 지정할 수는 없습니다.

[ @raise_snmp_trap = ] raise_snmp_trap

SQL Server 버전 7.0에서 구현되지 않았습니다. @raise_snmp_trap 기본값0인 tinyint입니다.

[ @performance_condition = ] N'performance_condition'

'ItemComparatorValue' 형식으로 표현된 값입니다. @performance_condition 기본값NULL인 nvarchar(512)이며 이러한 요소로 구성됩니다.

형식 요소 설명
항목 성능 개체, 성능 카운터 또는 카운터의 명명된 인스턴스입니다.
비교 다음 연산자 중 하나: >, <또는 =.
카운터의 숫자 값입니다.

[ @category_name = ] N'category_name'

경고 범주의 이름입니다. @category_name sysname이며 기본값은 .입니다NULL.

[ @wmi_namespace = ] N'wmi_namespace'

이벤트를 쿼리할 WMI 네임스페이스입니다. @wmi_namespace sysname이며 기본값은 .입니다NULL. 로컬 서버의 네임스페이스만 지원됩니다.

[ @wmi_query = ] N'wmi_query'

경고에 대한 WMI 이벤트를 지정하는 쿼리입니다. @wmi_query 기본값NULL인 nvarchar(512)입니다.

반환 코드 값

0 (성공) 또는 1 (실패).

결과 집합

없음.

설명

sp_add_alert 는 데이터베이스에서 msdb 실행되어야 합니다.

SQL Server 및 SQL Server 애플리케이션에서 생성된 오류/메시지가 Windows 애플리케이션 로그로 전송되어 경고를 발생시키는 상황은 다음과 같습니다.

  • 심각도 19 이상 sys.messages 오류
  • 구문을 사용하여 WITH LOG 호출된 모든 RAISERROR
  • 다음 sys.messages 을 사용하여 수정 또는 생성된 모든 오류 sp_altermessage
  • 다음을 사용하여 기록된 모든 이벤트 xp_logevent

SQL Server Management Studio에서는 전체 경고 시스템을 그래픽 방식으로 간편하게 관리할 수 있을 뿐만 아니라 인프라도 적합한 방식으로 구성할 수 있습니다.

경고가 제대로 작동하지 않는 경우 다음 여부를 검사.

  • SQL Server 에이전트 서비스가 실행 중입니다.

  • Windows 애플리케이션 로그에 이벤트가 표시됨

  • 경고가 사용하도록 설정됨

  • master 데이터베이스에서 xp_logevent로 생성된 이벤트가 발생합니다. 따라서 xp_logevent 경고 에 대한 @database_name 아니면 경고를 masterNULL트리거하지 않습니다.

사용 권한

기본적으로 sysadmin 고정 서버 역할의 멤버만 sp_add_alert를 실행할 수 있습니다.

예제

다음 예에서는 시작할 때 Back up the AdventureWorks2022 Database 작업을 실행하는 경고(Test Alert)를 추가합니다.

참고 항목

이 예에서는 메시지 55001 및 Back up the AdventureWorks2022 Database 작업이 이미 있다고 가정합니다. 이 예는 설명을 목적으로 사용한 것입니다.

USE msdb;
GO

EXEC dbo.sp_add_alert
    @name = N'Test Alert',
    @message_id = 55001,
    @severity = 0,
    @notification_message = N'Error 55001 has occurred. The database will be backed up...',
    @job_name = N'Back up the AdventureWorks2022 Database';
GO