Share via


뉴스레터 예제

업데이트: 2006년 7월 17일

뉴스레터 예제는 간단한 웹 기반 구독 관리 응용 프로그램을 만드는 방법을 보여 줍니다. 이 예제는 HTML 기반 인터페이스 계층과 구독 관리 중간 계층이 있는 n-계층 구조를 포함합니다. 웹 프로젝트를 실행하면 Microsoft Visual Studio 웹 프로젝트가 Visual Web Developer Web Server를 만들어 사용자가 보다 쉽게 예제를 사용할 수 있습니다. 이 예제는 IA64에서 지원되지 않습니다.

시나리오

Adventure Works Cycles는 고객을 대상으로 한 뉴스레터와 스폰서 프로모션 이벤트를 게시합니다. 고객은 이 응용 프로그램을 사용하여 이러한 뉴스레터와 프로모션 이벤트 관련 알림을 받아볼 수 있습니다.

고객은 웹 페이지를 통해 특정 유형의 정보(뉴스레터 또는 프로모션)를 구독하고 구독이 배달될 시기(이벤트 기반 또는 예약)를 선택합니다.

Adventure Works Cycles에서 뉴스레터 데이터와 프로모션 이벤트 데이터를 포함하는 파일은 감시되는 폴더에 저장됩니다. 생성자가 실행되면서 이벤트 기록 규칙을 실행하여 예약된 구독에 사용되는 기록을 업데이트합니다. 그런 다음 처리되지 않은 이벤트 일괄 처리에 대해 이벤트 기반 규칙을 실행하고 이후 처리 예정인 모든 예약된 구독에 대해 예약된 구독 규칙을 실행합니다. 예약된 구독 규칙이 실행되면 각 구독이 마지막으로 알림을 생성한 시점을 추적하는 구독 기록을 업데이트합니다. 이 정보를 사용하여 중복 알림을 방지할 수 있습니다.

다음과 같은 경우에 알림이 생성됩니다.

  • 이벤트의 문서 유형(뉴스레터 또는 프로모션)이 구독의 문서 유형과 일치합니다.
  • 뉴스레터 또는 이벤트의 범주가 구독의 범주와 일치합니다.
  • 구독이 예약된 구독인 경우 예약된 시간은 마지막으로 생성자 규칙이 실행된 시점과 현재 생성자 규칙이 실행된 시점 사이에서 발생합니다.
  • 구독이 예약된 구독인 경우 이벤트가 데이터베이스에 커밋된 시간은 구독이 마지막으로 알림을 생성한 시간 이후입니다.

이에 따른 알림은 XSLT 콘텐츠 포맷터로 서식화되며 파일 배달 프로토콜을 통해 전송됩니다.

언어

XML, XSD, XSLT 및 Microsoft Visual C# 또는 Microsoft Visual Basic

기능

뉴스레터 예제에서는 다음 Microsoft SQL Server Notification Services 기능을 사용합니다.

응용 프로그램 영역 기능

이벤트 클래스

이벤트 기반 구독을 위한 기본 이벤트 클래스와 예약된 구독을 위한 이벤트 기록

구독 클래스

이벤트 기반 구독 및 예약된 구독

알림 클래스

다이제스트 배달

이벤트 공급자

파일 시스템 감시자 이벤트 공급자

콘텐츠 포맷터

XSLT 콘텐츠 포맷터

배달 프로토콜

파일 및 SMTP 배달 프로토콜

구독 관리 응용 프로그램

Visual Web Developer Web Server를 사용하는 Microsoft ASP.NET

필수 구성 요소

이 예제를 실행하기 전에 다음 소프트웨어가 설치되어 있는지 확인하십시오.

  • 다음 구성 요소를 포함하는 Microsoft SQL Server 2005
    • 데이터베이스 엔진
    • Notification Services
    • SQL Server Management Studio
    • Notification Services 예제. 이 예제는 SQL Server 2005에 포함되어 있습니다. SQL Server Developer 웹 사이트에서 최신 버전의 예제를 다운로드할 수 있습니다.
  • Visual Web Designer가 포함된 Microsoft Visual Studio 2005

예제 빌드

예제를 빌드하려면 다음을 수행해야 합니다.

  • Notification Services 인스턴스를 만듭니다.
  • Notification Services 인스턴스를 등록합니다.
  • SQL Server 및 데이터베이스 사용 권한을 부여합니다.

다음 절차에서는 뉴스레터 예제에 대한 각각의 작업을 수행하는 방법을 보여 줍니다.

1단계: Notification Services 인스턴스 만들기

  1. SQL Server Management Studio를 열고 SQL Server 인스턴스에 연결합니다.

  2. 개체 탐색기에서 Notification Services 폴더를 마우스 오른쪽 단추로 클릭한 후 New Notification Services Instance를 선택합니다.

  3. 새 Notification Services 인스턴스 대화 상자에서 찾아보기를 선택하고 뉴스레터 예제의 루트 폴더에서 InstanceConfig.xml 파일을 선택합니다.

  4. 매개 변수 입력란에 다음의 3개의 매개 변수 값을 입력합니다.

    • SampleDirectory는 뉴스레터 예제의 루트 폴더에 대한 경로입니다. 기본 경로는 C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\Newsletter입니다.
    • NotificationServicesHost는 로컬 서버 이름입니다.
    • SqlServer는 SQL Server 인스턴스의 이름입니다.
  5. 생성 후 인스턴스를 설정합니다 확인란을 선택합니다.

  6. 확인을 클릭합니다.

  7. Notification Services에서 인스턴스 생성을 마치면 닫기를 클릭합니다.

2단계: Notification Services 인스턴스 등록

  1. SQL Server Management Studio에서 Notification Services 노드를 열고 NewsletterInstance를 마우스 오른쪽 단추로 클릭한 후 Tasks를 가리킨 다음 Register를 선택합니다.

  2. 인스턴스 등록 대화 상자에서 Windows 서비스 만들기 확인란을 선택합니다. Windows 서비스가 이 컴퓨터에서 해당 Notification Services 인스턴스를 실행합니다.

  3. 서비스 로그온에서 Windows 계정과 암호를 입력합니다. 이것은 서비스가 실행될 Windows 계정입니다. Windows 인증을 사용하여 SQL Server에 액세스할 경우 해당 Windows 서비스 또한 이 계정을 사용하여 SQL Server에 연결합니다.

  4. SQL Server 인증을 사용하여 SQL Server에 액세스해야 할 경우 인증에서 SQL Server 인증을 선택한 후 SQL Server 로그인 이름과 암호를 입력합니다.

    Windows 인증을 사용하는 것이 좋습니다.

  5. 확인을 클릭합니다.

  6. Notification Services에서 인스턴스 등록을 마치면 닫기를 클릭합니다.

[!참고] 데이터베이스 소유자 또는 시스템 관리자 계정을 사용하여 Notification Services 예제를 배포할 경우 계정에 SQL Server 사용 권한을 부여할 필요가 없습니다. 이러한 권한을 부여하면 무시해도 되는 오류가 발생할 수 있습니다. 자체 응용 프로그램을 배포할 때는 보안을 향상시키기 위해 권한이 더 낮은 계정을 사용해야 합니다.

3단계: SQL Server, 데이터베이스 및 폴더 사용 권한 부여

  1. 개체 탐색기에서 보안 노드를 확장합니다.

  2. Windows 서비스에 대한 데이터베이스 로그인 계정을 새로 만들어야 할 경우 로그인을 마우스 오른쪽 단추로 클릭하고 새 로그인을 선택한 후 다음과 같이 로그인 계정을 만듭니다.

    • Windows 인증을 사용하려면 Windows 인증을 선택하고 인스턴스 등록 시 지정한 것과 동일한 Windows 계정을 입력합니다.
    • SQL Server 인증을 사용해야 할 경우 SQL Server 인증을 선택한 후 인스턴스 등록 시 지정한 것과 동일한 SQL Server 로그인과 암호를 입력합니다.
  3. Windows 서비스에 사용된 로그인에 SQL Server 액세스 권한이 이미 있으면 해당 로그인을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

  4. 로그인 대화 상자의 왼쪽 창에서 사용자 매핑을 선택합니다.

  5. NewsletterInstanceNSMain 데이터베이스에 대한 사용 권한을 부여합니다.

    1. 이 로그인으로 매핑된 사용자 상자에서 NewsletterInstanceNSMain을 선택합니다.
    2. 데이터베이스 역할 멤버 자격: NewsletterInstanceNSMain 상자에서 NSRunService를 선택합니다.
  6. NewsletterInstanceNewsletter 데이터베이스에 대한 사용 권한을 부여합니다.

    1. 이 로그인으로 매핑된 사용자 상자에서 NewsletterInstanceNewsletter를 선택합니다.
    2. 데이터베이스 역할 멤버 자격: NewsletterInstanceNewsletter 상자에서 NSRunService를 선택합니다.
  7. 확인을 클릭하여 SQL Server 사용 권한을 적용합니다.

  8. Windows 탐색기를 사용하여 다음과 같이 Events 폴더에 대한 보안을 구성합니다.

    1. Newsletter 예제의 Events 폴더로 이동합니다.
    2. Events 폴더를 마우스 오른쪽 단추로 클릭하고 공유 및 보안을 선택한 후 보안 탭을 선택합니다.
    3. 추가를 클릭하고 Windows 서비스에 사용된 계정을 추가합니다.
    4. 그룹 또는 사용자 이름 상자에서 방금 추가한 계정을 선택합니다.
    5. 사용 권한 상자에서 읽기수정 권한을 선택합니다.
    6. 확인을 클릭하여 변경 내용을 적용합니다.
  9. 다음과 같이 Notifications 폴더에 대한 보안을 구성합니다.

    1. 뉴스레터 예제의 Notifications 폴더로 이동합니다.
    2. Notifications 폴더를 마우스 오른쪽 단추로 클릭하고 공유 및 보안을 선택한 후 보안 탭을 선택합니다.
    3. 추가를 클릭하고 Windows 서비스에 사용된 계정을 추가합니다.
    4. 그룹 또는 사용자 이름 상자에서 방금 추가한 계정을 선택합니다.
    5. 사용 권한 상자에서 쓰기를 선택합니다.
    6. 확인을 클릭하여 변경 내용을 적용합니다.

예제 실행

예제를 실행하려면 다음을 수행해야 합니다.

  • 인스턴스를 시작합니다.
  • 웹 응용 프로그램을 사용하여 구독자와 구독을 추가합니다.
  • 이벤트가 들어 있는 XML 파일을 해당 위치에 놓습니다.

다음 절차에서는 이러한 작업을 수행하고 결과 알림을 확인하는 방법을 보여 줍니다.

1단계: 인스턴스 시작

  1. 개체 탐색기에서 Notification Services 폴더를 엽니다.

  2. NewsletterInstance를 마우스 오른쪽 단추로 클릭하고 Start를 선택합니다.

2단계: 구독자 및 구독 추가

  1. Visual Studio 2005를 엽니다.

  2. 파일 메뉴에서 열기를 가리킨 다음 웹 사이트를 클릭합니다.

  3. 웹 사이트 열기 대화 상자에서 뉴스레터 예제의 SubscriptionManagementWeb\cs\SubscriptionManagementWeb 폴더로 이동하고 열기를 선택합니다.

  4. F5 키를 눌러 웹 응용 프로그램을 실행합니다.

    웹 페이지를 사용하여 예제 사용자를 위한 구독을 뉴스레터 응용 프로그램에 추가합니다. 기본 구독 값을 사용하면 알림이 발생합니다.

[!참고] 프로덕션 응용 프로그램의 경우 또는 이 응용 프로그램을 제한된 계정으로 실행 중인 경우에는 응용 프로그램의 SQL Server 로그인을 인스턴스 및 응용 프로그램 데이터베이스에 있는 NSSubscriberAdmin 데이터베이스 역할에 추가합니다.

3단계: 이벤트 전송

  1. Windows 탐색기에서 뉴스레터 예제의 루트 폴더로 이동하여 EventData.xml 파일을 Events 하위 폴더에 복사합니다.

    이 파일을 복사하면 파일 시스템 감시자 이벤트 공급자는 해당 파일에서 데이터를 읽어와 응용 프로그램으로 전송한 후 파일 확장명을 .done로 변경합니다.

    데이터를 읽거나 전송할 때 오류가 발생하면 이벤트 공급자는 파일 확장명을 .err로 변경합니다. 오류에 대한 추가 정보를 보려면 Windows 이벤트 뷰어를 확인하십시오.

4단계: 알림 보기

  1. Notification Services에서 알림을 생성할 때까지 약 1분 정도 기다립니다.

  2. Windows 탐색기로 뉴스레터 예제의 Notifications 폴더를 찾습니다. FileNotifications.txt라는 파일에서 알림을 확인할 수 있습니다.

  3. 전자 메일 메시지가 놓인 폴더로 이동합니다. 이 폴더는 일반적으로 C:\Inetpub\mailroot에 있는 폴더 중 하나입니다. SMTP 서버 상태에 따라 알림이 Pickup 폴더에 추가되거나 Queue 폴더에 추가됩니다. SMTP 서비스가 실행 중이면 메시지가 Badmail 폴더로 이동될 수 있습니다.

예제 제거

다음 절차를 사용하여 뉴스레터 예제를 제거합니다.

뉴스레터 예제를 제거하려면

  1. 개체 탐색기에서 Notification Services 폴더를 엽니다.

  2. NewsletterInstance를 마우스 오른쪽 단추로 클릭한 다음 Stop을 선택합니다.

  3. NewsletterInstance를 마우스 오른쪽 단추로 클릭하고 Tasks를 가리킨 다음 Unregister를 선택합니다.

  4. NewsletterInstance를 마우스 오른쪽 단추로 클릭하고 Tasks를 가리킨 다음 Delete를 선택합니다.

참고 항목

관련 자료

SQL Server Notification Services 예제
Notification Services 보안 설정

도움말 및 정보

SQL Server 2005 지원 받기

변경 내역

릴리스 내역

2006년 7월 17일

변경된 내용
  • 이 예제를 실행하기 위한 필수 구성 요소로 Visual Web Designer를 추가했습니다.

2006년 4월 14일

변경된 내용
  • 데이터베이스 소유자 권한을 사용한 예제 실행에 대한 참고를 추가했습니다.