NSPrepareRuleFiring(Transact-SQL)

규칙 발생을 위해 응용 프로그램 데이터베이스를 준비합니다. 이 준비에서는 퀀텀을 예약하고, 이벤트 뷰와 예약된 구독 뷰를 퀀텀에 맞게 제대로 구체화하며, 사용 가능한 이벤트 및 구독 집합을 기반으로 퀀텀에 대한 규칙 발생을 예약하도록 합니다.

저장 프로시저가 완료되면 응용 프로그램 데이터베이스는 일반적인 생성자 작업 중에 규칙 실행 이전의 상태와 동일한 상태가 됩니다.

구문

[ application_schema_name . ] NSPrepareRuleFiring 
    [ [ @ReportPossibleEventChronicleUsage = ] chronical_usage_flag ]
    [, [ @DisableQuantumLimits = ] quantum_limits_flag ]

인수

[ @ReportPossibleEventChronicleUsage = ] chronical_usage_flag

준비된 규칙 발생 프로시저가 규칙 발생의 영향을 받거나 규칙 발생에서 사용하는 가능한 이벤트 기록의 목록을 반환하는지 여부를 나타냅니다. 0이 아닌 값을 사용하면 루틴에서 준비된 규칙 발생과 연관된 이벤트 기록 집합을 나열하는 결과 집합을 반환합니다. chronical_usage_flagtinyint이며 기본값은 1입니다.

[ @DisableQuantumLimits = ] quantum_limits_flag

새 퀀텀 예약에서 ADF(응용 프로그램 정의 파일)에 있는 응용 프로그램 실행 설정의 ChronicleQuantumLimit 값과 SubscriptionQuantumLimit 값을 사용하는지 여부를 나타냅니다. 0이 아닌 값은 저장 프로시저가 하나 이상의 퀀텀 기간을 건너뛰는 데 이러한 설정을 사용해서는 안 된다는 의미입니다. quantum_limits_flagtinyint이며 기본값은 1입니다.

반환 코드 값

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

결과 집합

NSPrepareRuleFiring은 하나 또는 두 개의 결과 집합을 생성합니다. 첫 번째 결과 집합에는 규칙에 대한 정보가 포함됩니다.

열 이름 데이터 형식 설명

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)

준비된 규칙 발생과 연관된 이벤트 기록의 이름입니다.

주의

Notification Services 는 인스턴스를 만들 때 응용 프로그램 데이터베이스에 NSPrepareRuleFiring 저장 프로시저를 만듭니다. 응용 프로그램을 업데이트할 경우 Notification Services 는 저장 프로시저를 다시 컴파일합니다.

저장 프로시저는 ADF(응용 프로그램 정의 파일)의 SchemaName 요소로 지정된 응용 프로그램의 스키마에 있습니다. 제공된 스키마 이름이 없을 경우 기본 스키마는 dbo입니다.

이 저장 프로시저는 생성자가 해제 상태이거나 해제 보류 중 상태인 경우에만 실행할 수 있습니다.

저장 프로시저는 NSExecuteRuleFiring을 호출하지 않고 반복적으로 호출할 수 있지만 응용 프로그램 데이터베이스의 상태는 변경되지 않습니다. 준비된 규칙 발생 이상으로 응용 프로그램 데이터베이스 상태를 이동하는 유일한 방법은 NSExecuteRuleFiring 저장 프로시저를 사용하거나 인스턴스를 시작하는 것입니다.

사용 권한

실행 권한은 기본적으로 NSGeneratorNSRunService 데이터베이스 역할, db_owner 고정 데이터베이스 역할 및 sysadmin 고정 서버 역할의 멤버로 설정됩니다.

1. 기록 사용 보고 및 퀀텀 제한 사용

다음 예에서는 퀀텀 1에서 예약된 규칙을 실행할 데이터베이스를 준비하는 방법을 보여 주며 가능한 이벤트 기록 사용에 대해 보고합니다. 규칙 발생은 ADF에 지정된 퀀텀 제한을 무시하지 않습니다.

응용 프로그램은 모든 응용 프로그램 개체를 dbo 스키마에 배치하는 기본 SchemaName 설정을 사용합니다.

EXEC dbo.NSSetQuantumClock 
    @QuantumId = 1;
EXEC dbo.NSPrepareRuleFiring 
    @ReportPossibleEventChronicleUsage = 1,
    @DisableQuantumLimits = 0;

2. 기본 설정 사용

다음 예에서는 저장 프로시저 기본값을 사용하여 퀀텀 100에서 예약된 규칙을 실행할 데이터베이스를 준비하는 방법을 보여 줍니다. 저장 프로시저는 이벤트 기록 사용을 보고하지 않고 퀀텀 제한을 무시합니다.

이 예에서 저장 프로시저는 다른 모든 응용 프로그램 개체와 마찬가지로 ADF의 SchemaName 요소에 지정된 Stock 스키마에 있습니다.

EXEC dbo.NSSetQuantumClock 
    @QuantumId = 100;
EXEC Stock.NSPrepareRuleFiring;

참고 항목

참조

NSExecuteRuleFiring(Transact-SQL)
NSSetQuantumClock(Transact-SQL)
NSSetQuantumClockDate(Transact-SQL)
Notification Services 저장 프로시저(Transact-SQL)
NSExecuteRuleFiring(Transact-SQL)

관련 자료

Notification Services 성능 보고서
SchemaName Element (ADF)

도움말 및 정보

SQL Server 2005 지원 받기