구독 클래스에 대한 기록 정의
구독 기록 테이블에는 응용 프로그램에서 사용할 수 있도록 구독 데이터가 저장됩니다. 예를 들어, 구독 기록 테이블을 사용하여 구독자에게 배달된 마지막 알림 정보를 저장하고 중간 시간 동안 들어오는 데이터만을 기준으로 다음 알림을 생성할 수 있습니다.
구독 기록의 일반적인 용도
구독 기록에는 일반적으로 이전 알림에 대한 데이터가 저장됩니다. 알림을 생성할 때 응용 프로그램은 이 데이터를 사용하여 구독자가 알림을 마지막으로 받은 시간이나 구독자가 유사한 알림을 받은 경우를 파악할 수 있습니다.
구독 기록 테이블을 사용해야 하는 경우의 좋은 예로 각 구독자에게 기간별로 하나의 알림만 배달되도록 제한하고자 하는 응용 프로그램을 들 수 있습니다. 구독자별로 하나의 행을 포함하고 마지막 알림이 생성된 시간을 나타내는 타임스탬프를 가지는 구독을 정의할 수 있습니다.
알림을 생성할 때 구독자가 과거 24시간 동안 알림을 받지 않은 경우에만 알림을 생성하도록 하는 조건을 포함시킬 수 있습니다. 구독자가 최근에 알림을 받지 않은 경우 알림 테이블에 알림을 추가하고 구독 기록에서 타임스탬프를 업데이트합니다.
구독 기록 테이블
구독 기록은 테이블로 구현됩니다. 구독 클래스를 정의할 때 Transact-SQL CREATE TABLE 문을 사용하여 기록 테이블을 0개 이상 정의할 수 있습니다. 이 문에 테이블 이름, 필드 이름 및 필드 데이터 형식이 포함되어야 합니다. 이 문에는 제약 조건에 대한 인수 및 기타 선택적 CREATE TABLE 매개 변수가 포함될 수도 있습니다. 또한 이벤트 기록 테이블에 인덱스를 만들기 위한 CREATE INDEX 문을 포함시킬 수도 있습니다. 자세한 내용은 CREATE TABLE(Transact-SQL)을 참조하십시오.
Notification Services는 응용 프로그램을 업데이트할 때 다른 구독 테이블의 이름은 자동으로 바꾸는 반면 구독 기록 테이블의 이름은 자동으로 바꾸지 않습니다. 기록 테이블을 만드는 문은 같은 이름을 가진 테이블이 있는 경우 실패합니다. INFORMATION_SCHEMA.TABLES 뷰를 사용하여 테이블이 있는지 확인한 다음 테이블 생성을 건너뛰거나 해당 테이블을 삭제했다가 다시 만드십시오.
다음 예에서는 이름이 dbo.SubscriberHistory인 기존 테이블을 삭제한 다음 SubscriberId 및 NotificationTime이라는 두 열을 가진 StockSubscriptions 구독 클래스에 대한 기록을 만드는 방법을 보여 줍니다.
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'SubscriptionHistory'
AND TABLE_SCHEMA = 'dbo')
DROP TABLE dbo.SubscriberHistory;
CREATE TABLE dbo.SubscriberHistory
(
SubscriberId nvarchar(255),
LastNotified datetime
);
[!참고] XML 파일에 응용 프로그램을 정의할 경우 '>'와 같은 예약된 XML 문자를 해당 엔터티 참조로 바꾸어야 합니다. 자세한 내용은 XML Reserved Characters를 참조하십시오.
구독 기록 테이블을 정의하려면
XML을 사용하여 응용 프로그램을 정의할 경우에는 ADF(응용 프로그램 정의 파일)에 기록을 정의하고 프로그래밍 방식으로 응용 프로그램을 정의할 경우에는 NMO(Notification Services Management Objects)를 사용하여 기록을 정의합니다.
구독 기록 업데이트
하나 이상의 쿼리를 정의하여 구독 기록 테이블 데이터를 처리할 수 있습니다. 이러한 쿼리는 구독 테이블의 데이터를 삽입, 업데이트 및 삭제하여 응용 프로그램에서 사용할 수 있도록 테이블을 적절한 상태로 유지합니다.
새 이벤트 또는 예약된 구독 규칙으로 또는 새 구독 규칙의 일부로 구독 기록 규칙을 정의해야 합니다.
[!참고] 여러 이벤트 규칙과 여러 예약된 규칙 간의 발생 순서는 보장되지 않습니다.
다음 코드는 주식 응용 프로그램에 대한 구독 기록을 업데이트하는 방법을 보여 줍니다. 구독 기록은 각 구독자에 대한 알림이 마지막으로 생성된 시간을 추적합니다.
UPDATE dbo.SubscriberHistory
SET LastNotified = GETUTCDATE()
FROM dbo.StockSub s
JOIN dbo.SubscriberHistory h
ON s.SubscriberId = h.SubscriberId
JOIN dbo.EventChron ec
ON ec.Updated > h.LastNotified;
이 규칙은 SubscriberHistory 구독 기록을 업데이트하기 전에 이벤트 기록을 사용하여 알림을 사용하느냐에 따라 달라집니다. 알림을 생성하는 구독 규칙에 이 규칙을 추가해야 하며 새 구독 규칙에는 넣지 않아야 합니다.
구독 규칙에 대한 자세한 내용은 구독 규칙 정의를 참조하십시오.
참고 항목
개념
관련 자료
구독 클래스 정의
UPDATE(Transact-SQL)
SET(Transact-SQL)
IF...ELSE(Transact-SQL)
EXISTS(Transact-SQL)
CREATE TABLE(Transact-SQL)