Share via


주식 예제

업데이트: 2006년 7월 17일

주식 예제는 Microsoft SQL Server 2005 Notification Services 응용 프로그램이며 이벤트 기반 구독과 예약된 구독을 모두 사용하여 주식 시장 데이터에 따른 알림을 만듭니다. 구독 사용자는 주식 시세가 지정한 트리거 값을 초과하면 알림을 받습니다.

이 예제는 또한 사용자 지정 응용 프로그램에서 Notification Services가 만든 Microsoft Windows 서비스를 사용하는 대신 Notification Services 엔진을 호스팅하는 방법을 보여 줍니다.

시나리오

투자자가 주식 시세에 대한 알림을 구독합니다. 각 구독은 주식 기호를 지정하며 이벤트 기반 구독 또는 예약된 구독입니다.

이벤트 기반 구독의 경우 주식 이벤트가 도착하면 다음 조건이 모두 충족되는 경우에 Notification Services에서 알림을 생성합니다.

  • 이벤트의 주식 기호가 구독의 주식 기호와 일치합니다.
  • 새 주식 시세가 구독의 트리거 값보다 높습니다.
  • 주식 이벤트 기록에 있는 주식의 이전 고가가 구독의 트리거 값보다 낮습니다. 이는 구독자가 같은 주식에 대해 여러 알림을 받지 않도록 합니다.

새 주식 시세가 기록에 있는 시세보다 높거나 주식 기호가 기록에 없는 경우 Notification Services는 기록을 업데이트합니다.

이벤트 기반 구독에 대한 알림은 한 번에 한 개만 배달됩니다.

예약된 구독의 경우 Notification Services는 주식 시세 기록의 데이터를 예약된 구독과 대조합니다. 대조는 구독의 주식 기호가 기록의 주식 기호와 일치하는 경우 발생합니다.

Notification Services는 각 대조에 대해 알림을 생성합니다. 배포자는 한 구독자에 대한 여러 개의 알림을 구독자의 주식 포트폴리오에 대한 데이터를 제공하는 하나의 알림으로 결합합니다.

언어

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

기능

응용 프로그램 영역 기능

이벤트 클래스

이벤트 클래스 한 개 및 이벤트 기록 한 개

구독 클래스

구독 클래스 두 개(이벤트 기반 구독에 대한 클래스 한 개와 예약된 구독에 대한 클래스 한 개)

알림 클래스

알림 클래스 두 개(이벤트 기반 알림에 대한 클래스 한 개와 예약된 알림에 대한 클래스 한 개). 예약된 알림은 다이제스트 배달을 사용합니다.

이벤트 공급자

파일 시스템 감시자 이벤트 공급자 한 개 및 호스팅되지 않은 사용자 지정 이벤트 공급자 한 개

콘텐츠 포맷터

Notification Services XSLT 콘텐츠 포맷터. 각 알림 클래스는 콘텐츠 포맷터에 대한 자체 XSLT 파일을 지정합니다.

배달 프로토콜

파일 및 SMTP 배달 프로토콜

Notification Services 엔진

콘솔 응용 프로그램에서 호스팅됩니다.

필수 구성 요소

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

  • 다음 구성 요소를 포함하는 SQL Server 2005
    • 데이터베이스 엔진
    • Notification Services
    • SQL Server Management Studio
    • Notification Services 예제. 이 예제는 SQL Server 2005에 포함되어 있습니다. SQL Server 개발자 웹 사이트에서 최신 버전의 예제를 다운로드할 수 있습니다.
    • .NET Framework SDK 2.0 또는 Microsoft Visual Studio 2005. .NET Framework SDK는 무료로 구할 수 있습니다. .NET Framework SDK 설치를 참조하십시오.

솔루션 빌드

강력한 이름 키 파일을 생성하지 않았다면 다음 지침에 따라 해당 키 파일을 생성합니다.

강력한 이름 키 파일을 생성하려면

  1. Microsoft Visual Studio 2005 명령 프롬프트를 엽니다. 시작을 클릭하고 모든 프로그램, Microsoft .NET Framework SDK 2.0을 차례로 가리킨 다음 SDK 명령 프롬프트를 클릭합니다.

    -- 또는--

    Microsoft .NET Framework 명령 프롬프트를 엽니다. 시작을 클릭하고 모든 프로그램, Microsoft .NET Framework SDK 2.0을 차례로 가리킨 다음 SDK 명령 프롬프트를 클릭합니다.

  2. 디렉터리 변경 명령(CD)을 사용하여 명령 프롬프트 창의 현재 디렉터리를 예제가 설치된 폴더로 변경합니다.

    [!참고] 예제가 있는 폴더를 확인하려면 시작 단추를 클릭하고 모든 프로그램, Microsoft SQL Server, 설명서 및 자습서를 차례로 가리킨 다음 예제 디렉터리를 클릭하십시오. 기본 설치 위치가 사용된 경우 예제는 <system_drive>:\Program Files\Microsoft SQL Server\100\Samples에 있습니다.

  3. 명령 프롬프트에서 다음 명령을 실행하여 키 파일을 생성합니다.

    sn -k SampleKey.snk

    ms160739.note(ko-kr,SQL.90).gif중요:
    강력한 이름 키 쌍에 대한 자세한 내용은 MSDN의 .NET Development Center에서 "Security Briefs: Strong Names and Security in the .NET Framework"를 참조하십시오.

인스턴스를 만드는 즉시 시작할 수 있도록 솔루션을 빌드합니다.

Visual Studio 솔루션 빌드

  • .NET Framework SDK를 사용할 경우 다음을 수행합니다.

    1. 시작 메뉴에서 모든 프로그램\Microsoft .NET Framework SDK v2.0을 가리킨 후 SDK Command Prompt를 클릭합니다.
    2. 주식 예제의 루트 폴더로 이동합니다. 기본 위치에 대해 다음 명령을 입력합니다.
      cd C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\Stock
    3. 다음을 입력하여 솔루션을 빌드합니다.
      [C#]
      msbuild Stock.sln
      [Visual Basic]
      msbuild Stock_VB.sln
  • 또는 Visual Studio 2005를 사용할 경우 다음을 수행합니다.

    1. 선택한 솔루션 파일(Stock.sln 또는 Stock_VB.sln)을 엽니다.
    2. 솔루션을 빌드합니다.

Notification Services 인스턴스 배포

Notification Services 인스턴스를 배포하려면 다음을 수행해야 합니다.

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

다음 절차에서는 이러한 각 작업을 수행하는 방법을 보여 줍니다.

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

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

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

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

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

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

  6. 확인을 클릭합니다.

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

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

  1. SQL Server Management Studio에서 Notification Services 노드를 열어 StockInstance를 마우스 오른쪽 단추로 클릭하고 작업을 가리킨 후 등록을 선택합니다.

    옵션을 선택하지 마십시오. 사용자 지정 응용 프로그램에서 엔진을 호스팅하므로 Windows 서비스를 만들지 마십시오.

  2. 확인을 클릭합니다.

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

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

3단계: SQL Server, Windows 및 폴더 사용 권한 부여

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

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

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

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

  5. 다음과 같이 StockInstanceNSMain 데이터베이스에 대한 사용 권한을 부여합니다.

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

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

  8. 다음과 같이 Events 폴더에 대한 보안을 구성합니다.

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

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

예제 실행

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

  • 인스턴스를 시작합니다.
  • 구독자 및 구독을 추가합니다.
  • 이벤트를 전송합니다.

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

1단계: 호스팅된 엔진 시작

  1. 호스팅된 엔진을 실행 중인 계정이 Notification Services 이진 파일을 읽고 실행하기 위한 권한이 있는 SQLServer2005NotificationServicesUser$ComputerName Windows 그룹의 멤버인지 또는 해당 계정에 C:\Program Files\Microsoft SQL Server\90\Notification Services 폴더에서 파일을 읽고 실행하기 위한 권한이 있는지 확인합니다.

  2. Windows 탐색기에서 주식 예제의 HostableExecutionEngine\language\HostableExecutionEngine\bin\Debug 폴더로 이동합니다.

  3. HostableExecutionEngine.exe를 두 번 클릭하여 Notification Services 엔진을 호스팅하는 콘솔 응용 프로그램을 실행합니다.

    중요 Enter 키를 누르지 마십시오. Notification Services 응용 프로그램에서 알림을 생성하려면 엔진이 실행되고 있어야 합니다.

2단계: 구독자, 구독 및 이벤트 추가

  1. AddSubscribers.exe를 실행합니다.

    이 파일은 주식 예제의 AddSubscribers\language\AddSubscribers\bin\Debug 하위 폴더에 있습니다.

    구독자가 추가된 후에 Enter 키를 눌러 콘솔 응용 프로그램을 닫습니다.

  2. AddSubscriptions.exe를 실행합니다.

    이 파일은 주식 예제의 AddSubscriptions\language\AddSubscriptions\bin\Debug 하위 폴더에 있습니다.

    구독이 추가된 후에 Enter 키를 눌러 콘솔 응용 프로그램을 닫습니다.

  3. NonHostedEventProvider.exe를 실행합니다.

    이 파일은 주식 예제의 NonHostedEventProvider\language\NonHostedEventProvider\bin\Debug 하위 폴더에 있습니다.

    그러면 응용 프로그램 외부에서 실행되는 호스팅되지 않은 이벤트 공급자를 통해 응용 프로그램에 이벤트가 추가됩니다. 다음 단계는 호스팅된 파일 시스템 감시자 이벤트 공급자에 이벤트를 전송하는 방법을 보여 줍니다.

[!참고] 프로덕션 응용 프로그램의 경우 또는 이 응용 프로그램을 제한된 계정으로 실행 중인 경우에는 응용 프로그램의 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 폴더로 이동될 수 있습니다.

[!참고] 예제를 다시 빌드하거나 변경하지 않고 다른 알림을 생성하려면 다음 쿼리를 실행합니다. USE [StockInstanceStock] DELETE FROM [StockInstanceStock].[dbo].[StockEventsChron]

엔진 중지

이벤트 전송과 결과 알림 보기를 마쳤으면 Notification Services 엔진을 중지합니다.

엔진을 중지하려면

  • HostableExecutionEngine 콘솔 창에서 Enter 키를 눌러 엔진을 중지합니다.

예제 제거

다음 절차에 따라 주식 예제를 제거하십시오.

주식 예제를 제거하려면

  1. 개체 탐색기에서 Notification Services를 확장합니다.

  2. StockInstance를 마우스 오른쪽 단추로 클릭하고 작업을 가리킨 다음 등록 취소를 선택합니다.

  3. StockInstance를 마우스 오른쪽 단추로 클릭하고 작업을 가리킨 다음 삭제를 선택합니다.

참고 항목

관련 자료

Notification Services 엔진 호스팅
SQL Server Notification Services 예제
Notification Services 보안 설정

도움말 및 정보

SQL Server 2005 지원 받기

변경 내역

릴리스 내역

2006년 7월 17일

추가된 내용
  • 예제 실행의 3단계 및 4단계에서 호스팅되지 않은 이벤트 공급자 및 파일 시스템 감시자 이벤트 공급자를 사용하여 이벤트를 전송하는 옵션에 대한 정보를 추가했습니다.
  • NSSubscriberAdmin 데이터베이스 역할 사용에 대한 참고 사항을 추가했습니다.

2006년 4월 14일

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

2005년 12월 5일

변경된 내용
  • 키 파일의 이름 및 위치를 포함하여 키 파일 생성 방법에 대한 정보를 변경했습니다.
  • 사용 권한이 필요한 계정을 명확히 하기 위해 사용 권한 섹션을 업데이트했습니다.