sp_add_alert(Transact-SQL)
적용 대상: SQL Server
경고를 만듭니다.
구문
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 합니다 0
NULL
.
Microsoft Windows 애플리케이션 로그에 기록된 오류만 sysmessages
경고를 보낼 수 있습니다.
[ @severity = ] 심각도
경고를 정의하는 심각도 수준(처음부터 1
25
끝까지)입니다. @severity 기본값0
인 int입니다. 표시된 심각도를 사용하여 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 기본값NULL
인 uniqueidentifier입니다.
@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 아니면 경고를master
NULL
트리거하지 않습니다.
사용 권한
기본적으로 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