NSExecuteRuleFiring(Transact-SQL)
Microsoft SQL Server Notification Services 규칙을 준비하고 실행합니다. 이 프로시저를 통해 생성자를 수동으로 실행하여 알림을 생성하고 상태를 관리하는 규칙을 실행할 수 있습니다.
이 저장 프로시저는 규칙 발생의 성공 여부에 관계없이 적절한 이벤트 및 예약된 구독 뷰를 구체화하여 다음 규칙 발생을 준비하므로 규칙 발생 동작을 디버깅할 수 있습니다.
구문
[ application_schema_name . ] NSExecuteRuleFiring
[ [ @ReportExecutionResults = ] report_flag ]
[, [ @DisableQuantumLimits = ] limit_flag ]
인수
[@ReportExecutionResults = ] report_flag
저장 프로시저의 규칙 발생 실행에 관한 정보 보고 여부를 나타냅니다. 0이 아닌 값을 사용하면 규칙 발생에 대한 정보를 반환합니다. report_flag는 tinyint이며 기본값은 1입니다.
[@DisableQuantumLimits = ] limit_flag
저장 프로시저가 응용 프로그램별 이벤트 기록 퀀텀 및 구독 퀀텀 제한을 준수하는지 여부를 나타냅니다. 0이 아닌 값을 사용하면 퀀텀 일정 예약 시 퀀텀 제한을 무시합니다. limit_flag는 tinyint이며 기본값은 1입니다.
반환 코드 값
0(성공) 또는 1(실패)
결과 집합
NSExecuteRuleFiring은 최대 3개의 결과 집합을 생성합니다. 첫 번째 결과 집합에는 예약된 규칙에 대한 정보가 포함됩니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
QuantumId |
int |
규칙 발생에 대한 퀀텀 ID입니다. |
QuantumStartTime |
datetime |
규칙을 포함한 퀀텀의 시작 날짜와 시간(UTC)입니다. |
QuantumEndTime |
datetime |
규칙을 포함한 퀀텀의 종료 날짜와 시간(UTC)입니다. |
RuleName |
nvarchar(255) |
ADF(응용 프로그램 정의 파일)에서 규칙에 할당된 이름입니다. 실행될 규칙이 준비되지 않은 경우 이 값은 NULL입니다. |
EventClassName |
nvarchar(255) |
이벤트 트리거 규칙의 경우 연관된 이벤트 클래스의 이름입니다. 규칙이 예약된 구독 규칙이거나 실행될 규칙이 준비되지 않은 경우 이 값은 NULL입니다. |
SubscriptionClassName |
nvarchar(255) |
연관된 구독 클래스의 이름입니다. 규칙이 이벤트 기록 규칙이거나 실행될 규칙이 준비되지 않은 경우 값은 NULL입니다. |
RuleFiringId |
int |
준비된 규칙 발생을 식별하는 ID입니다. 실행될 규칙 발생이 준비되지 않은 경우 이 열은 NULL입니다. |
EventBatchId |
bigint |
연관된 이벤트 일괄 처리를 식별하는 ID입니다. 규칙이 이벤트 기록이나 이벤트 구독 규칙이 아닌 경우, 응용 프로그램이 이벤트를 순서대로 처리하지 않거나 실행될 규칙이 준비되지 않은 경우 값은 NULL입니다. |
StartScanTime |
datetime |
준비된 예약 구독 규칙에 대한 시작 날짜와 시간(UTC)입니다. 시작 날짜와 시간은 QuantumStartTime에서 QuantumEndTime 사이여야 합니다. 규칙이 이벤트 기록이나 이벤트 구독 규칙이 아닌 경우, 응용 프로그램이 이벤트를 순서대로 처리하지 않거나 실행될 규칙이 준비되지 않은 경우 값은 NULL입니다. |
EndScanTime |
datetime |
준비된 예약 구독 규칙에 대한 종료 날짜와 시간(UTC)입니다. 종료 날짜와 시간은 QuantumStartTime에서 QuantumEndTime 사이여야 합니다. 규칙이 이벤트 기록이나 이벤트 구독 규칙이 아닌 경우, 응용 프로그램이 이벤트를 순서대로 처리하지 않거나 실행될 규칙이 준비되지 않은 경우 값은 NULL입니다. |
RemainingQuantumRuleFirings |
int |
퀀텀에 대한 규칙 발생 완료까지 남아 있는 규칙 발생의 수입니다. 준비된 규칙 발생이 실행되지 않았기 때문에 이 수에는 모두 포함됩니다. 준비할 규칙이 없는 경우 이 값은 0입니다. |
두 번째 결과 집합은 가능한 효과가 있는 경우에만 기록에 나타납니다. 결과 집합은 PossibleChronicleReferenceByRule을 기준으로 정렬됩니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
PossibleChronicleReferenceByRule |
nvarchar(255) |
준비된 규칙 발생과 연관된 이벤트 기록의 이름입니다. |
세 번째 결과 집합은 저장 프로시저가 알림을 생성한 경우에만 나타납니다. 결과 집합은 알림에 대한 정보를 포함하며 NotificationClassName 값별로 그룹화됩니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
NotificationClassName |
nvarchar(255) |
알림을 생성한 알림 클래스의 이름입니다. |
NotificationBatchId |
bigint |
생성된 알림을 포함하는 알림 일괄 처리의 ID입니다. |
NotificationCount |
bigint |
규칙 발생에 의해 생성된 알림 개수입니다. |
StartGenerationTime |
datetime |
알림 일괄 처리의 시작 날짜와 시간(UTC)입니다. |
EndGenerationTime |
datetime |
알림 일괄 처리의 종료 날짜와 시간(UTC)입니다. |
주의
Notification Services 는 인스턴스를 만들 때 응용 프로그램 데이터베이스에 NSExecuteRuleFiring 저장 프로시저를 만듭니다. 응용 프로그램을 업데이트할 경우 Notification Services 는 저장 프로시저를 다시 컴파일합니다.
저장 프로시저는 ADF(응용 프로그램 정의 파일)의 SchemaName 요소로 지정된 응용 프로그램의 스키마에 있습니다. 제공된 스키마 이름이 없을 경우 기본 스키마는 dbo입니다.
NSExecuteRuleFiring 저장 프로시저를 실행하려면 생성자를 해제해야 합니다. 이 저장 프로시저는 생성자를 수동으로 작동하므로 생성자가 동시에 실행되도록 하면 이 저장 프로시저를 사용하기가 어렵습니다.
실제로 규칙을 발생시키지 않고 규칙 발생을 위해 응용 프로그램 데이터베이스를 준비하려는 경우에만 NSPrepareRuleFiring 저장 프로시저를 사용하십시오.
사용 권한
실행 권한은 기본적으로 NSGenerator 및 NSRunService 데이터베이스 역할, db_owner 고정 데이터베이스 역할 및 sysadmin 고정 서버 역할의 멤버로 설정됩니다.
예
1. 결과 보고 및 퀀텀 제한 무시
다음 예에서는 퀀텀 ID를 1로 설정한 다음 해당 퀀텀에 대한 규칙을 발생시키는 방법을 보여 줍니다. 저장 프로시저는 결과를 보고하고 ADF에 지정된 퀀텀 제한을 무시합니다.
응용 프로그램은 모든 응용 프로그램 개체를 dbo 스키마에 배치하는 기본 SchemaName 설정을 사용합니다.
EXEC dbo.NSSetQuantumClock
@QuantumId = 1;
EXEC dbo.NSExecuteRuleFiring
@ReportExecutionResults = 1,
@DisableQuantumLimits = 0;
이 예를 실행한 후 응용 프로그램을 활성화하면 퀀텀 시계가 퀀텀 ID 1부터 계속 진행됩니다. 퀀텀 시계는 최신 퀀텀에 맞춰 자체적으로 자동 재설정되지 않습니다.
2. 기본 설정 사용
다음 예에서는 퀀텀 ID를 100으로 설정한 다음 기본값을 사용하여 해당 퀀텀의 규칙을 발생시키는 방법을 보여 줍니다. 저장 프로시저는 결과를 보고하지 않고 퀀텀 제한을 무시합니다.
이 예에서 저장 프로시저는 다른 모든 응용 프로그램 개체와 마찬가지로 ADF의 SchemaName 요소에서 지정된 Stock 스키마에 위치합니다.
EXEC dbo.NSSetQuantumClock
@QuantumId = 100;
EXEC Stock.NSExecuteRuleFiring;
이 예를 실행한 후 응용 프로그램을 활성화하면 퀀텀 시계가 퀀텀 ID 100부터 계속 진행됩니다. 퀀텀 시계는 최신 퀀텀에 맞춰 자체적으로 자동 재설정되지 않습니다.
참고 항목
참조
NSPrepareRuleFiring(Transact-SQL)
NSSetQuantumClock(Transact-SQL)
NSSetQuantumClockDate(Transact-SQL)
Notification Services 저장 프로시저(Transact-SQL)
NSPrepareRuleFiring(Transact-SQL)
관련 자료
Notification Services 성능 보고서
SchemaName Element (ADF)