다음을 통해 공유


재고 추적 프로그램 예제

업데이트: 2006년 7월 17일

재고 추적 프로그램 예제에서는 조건 작업을 사용하여 구독자가 구독에 대한 쿼리 절을 정의할 수 있도록 허용하는 방법을 보여 줍니다.

시나리오

재고 수준이 변경되면 회사 직원이 이에 대한 알림을 받도록 허용하려고 합니다. 낮은 재고, 높은 재고, 큰 재고 변경 등 직원마다 찾는 데이터가 서로 다르기 때문에 각 직원이 구독에 대해 자신의 조건을 직접 만들 수 있도록 해야 합니다.

이 예제에서 구독자인 Stephanie와 David가 각자 구독을 만듭니다. Stephanie는 "Road-250 Black, 48" 제품의 최종 조립 재고가 35단위 이하가 되면 알림을 받도록 구독을 지정합니다. David는 "HL Crankarm" 제품의 부속 재고가 250단위 이하가 되면 알림을 받도록 구독을 지정합니다.

이벤트는 AdventureWorks Production.Inventory 테이블의 업데이트 트리거에 의해 시스템에 추가됩니다. 트리거는 재고 데이터가 업데이트될 때마다 재고 추적 응용 프로그램에 이벤트를 전송합니다. 재고 추적 응용 프로그램은 이벤트가 도착하는 생성자 퀀텀의 끝에서 이벤트 데이터를 구독 데이터와 대조하는 규칙을 시작하고 알림을 생성합니다.

알림은 전자 메일을 통해 구독자에게 전달됩니다.

언어

XML, XSLT, Transact-SQL, Microsoft Visual C# 또는 Microsoft Visual Basic

기능

재고 추적 프로그램 예제에서는 다음 Notification Services 기능을 사용합니다.

응용 프로그램 영역 기능

이벤트 클래스

기본 이벤트 큐(기록 없음)

구독 클래스

융통성 있는 구독 논리를 지원하기 위해 조건 작업을 사용하는 이벤트 기반 구독 규칙(기록 없음)

알림 클래스

다이제스트 배달

이벤트 공급자

AdventureWorks 데이터베이스에서 업데이트 트리거로 구현되는 호스팅되지 않은 이벤트 공급자

콘텐츠 포맷터

XSLT 콘텐츠 포맷터

배달 프로토콜

파일 및 SMTP 배달 프로토콜

Notification Services 엔진

인스턴스를 등록할 때 생성되는 Microsoft Windows 서비스

준비 작업

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

  • 다음 구성 요소를 포함하는 Microsoft SQL Server 2005

  • .NET Framework SDK 2.0 또는 Microsoft Visual Studio 2005. .NET Framework SDK는 무료로 구할 수 있습니다. .NET Framework SDK 설치를 참조하십시오.

  • 인터넷 정보 서비스(IIS)의 구성 요소인 SMTP(Simple Mail Transfer Protocol) 서비스. Microsoft Windows Server 2003에서는 SMTP가 IIS와 함께 기본적으로 설치되지 않습니다. SMTP 서비스를 설치 및 사용하는 방법은 IIS 설명서를 참조하십시오.

    [!참고] 이 예제를 실행하기 전에 SMTP 서비스가 중지되어 있는지 확인하십시오. SMTP 서비스를 중지하면 존재하지 않는 구독자에게 메시지 전송을 시도하는 대신 서버에 메시지를 보유합니다.

예제 빌드

인스턴스를 빌드하려면 다음을 수행해야 합니다.

  • 규칙 평가를 위한 SQL Server 로그인을 만듭니다.
  • Notification Services 인스턴스를 만듭니다.
  • Notification Services 인스턴스를 등록합니다.
  • Windows 서비스에 데이터베이스 사용 권한을 부여합니다.
  • 트리거를 만들고 규칙 평가 계정에 데이터베이스 사용 권한을 부여합니다.

다음 절차에서는 재고 추적 프로그램 예제에 이러한 각 작업을 수행하는 방법을 보여 줍니다.

1단계: 규칙 평가를 위한 SQL Server 로그인 계정 만들기

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

    응용 프로그램에 조건 작업을 포함하는 규칙이 지정되어 있으면 응용 프로그램은 조건을 평가하기 위해 로그인을 필요로 합니다. 이러한 별도의 로그인을 사용하면 구독자가 규칙을 만드는 데 사용할 수 있는 데이터를 한정할 수 있으며 중요한 데이터를 보호하는 데 도움이 됩니다.

    Notification Services 인스턴스를 만들기 전에 이 로그인이 서버에 존재해야 하며 데이터베이스에는 존재하면 안 됩니다. 이 예제에서는 NSRulesEvaluator라는 SQL Server 인증 로그인을 사용합니다. 자체 응용 프로그램에서는 SQL Server 인증이나 Windows 인증을 사용할 수 있습니다.

    [!참고] 가능하면 Windows 인증을 사용합니다.

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

  3. 로그인을 마우스 오른쪽 단추로 클릭하고 새 로그인을 선택합니다.

  4. SQL Server 인증을 선택합니다.

    이 계정은 서버에 대한 연결에는 사용되지 않으며 Notification Services 생성자가 데이터베이스 엔진 인스턴스 내에서 조건을 평가하는 데 사용됩니다.

  5. 로그인 이름 입력란에 NSRulesEvaluator를 입력합니다.

    NSRulesEvaluator 로그인에 대한 암호를 입력합니다.

  6. 데이터베이스 선택란에 AdventureWorks를 선택합니다.

  7. 확인을 클릭합니다.

    로그인에 기본 데이터베이스 액세스 권한이 없다는 대화 상자가 나타나면 확인을 클릭합니다. 데이터베이스 사용 권한은 이 예제 뒷부분에서 부여합니다.

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

  1. 개체 탐색기에서 Notification Services를 마우스 오른쪽 단추로 클릭하고 새 Notification Services 인스턴스를 선택합니다.

  2. 새 Notification Services 인스턴스 대화 상자에서 찾아보기를 클릭하고 InventoryTracker 폴더로 이동한 다음 InstanceConfig.xml 파일을 선택합니다.

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

    • SampleDirectory: 재고 추적 프로그램의 루트 폴더 경로입니다. 기본 위치는 C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\입니다.
    • SQLServer: 데이터베이스 엔진 인스턴스의 이름입니다.
    • NotificationServicesHost: Notification Services를 실행하는 서버의 이름입니다. 예제에서는 로컬 컴퓨터의 이름이어야 합니다.
  4. 생성 후 인스턴스를 설정합니다 확인란을 선택합니다.

  5. 확인을 클릭합니다.

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

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

  1. 개체 탐색기에서 Notification Services 노드를 확장하고 InventoryTrackerInstance를 마우스 오른쪽 단추로 클릭한 다음 작업을 가리키고 등록을 선택합니다.

  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 사용 권한을 부여할 필요가 없습니다. 이러한 권한을 부여하면 무시해도 되는 오류가 발생할 수 있습니다. 자체 응용 프로그램을 배포할 때는 보안을 향상시키기 위해 권한이 더 낮은 계정을 사용해야 합니다.

4단계: Windows 서비스에 데이터베이스 사용 권한 부여

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

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

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

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

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

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

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

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

5단계: 데이터베이스 트리거 구성 및 데이터베이스 사용 권한 부여

  1. SQL Server Management Studio의 파일 메뉴에서 열기를 선택한 후 파일을 선택합니다.

  2. 파일 대화 상자에서 SetupInventoryTrackerSample.sql을 엽니다.

    이 파일의 기본 위치는 C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\SQLScripts입니다.

  3. 데이터베이스 엔진에 연결 대화 상자가 나타나면 연결 정보를 입력하고 연결을 클릭합니다.

  4. F5 키를 눌러 Transact-SQL 문을 실행합니다.

강력한 이름의 키 파일 생성

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

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

  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

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

예제 실행

예제를 실행하려면 다음 작업이 필요합니다.

  • 인스턴스를 시작합니다.
  • 구독자 및 구독을 추가합니다.
  • 이벤트를 포함하는 XML 파일을 해당 위치에 놓습니다.
  • 결과 알림을 검토합니다.

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

1단계: 인스턴스 시작

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

  2. InventoryTrackerInstance를 마우스 오른쪽 단추로 클릭한 다음 시작을 클릭합니다.

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

  1. InventoryTracker 또는 InventoryTracker_VB Visual Studio 솔루션을 빌드합니다.

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

    1. 시작 메뉴에서 모든 프로그램\Microsoft .NET Framework SDK v2.0을 가리킨 후 SDK Command Prompt를 클릭합니다.
    2. 재고 추적 프로그램 예제의 루트 폴더로 이동합니다. 기본 위치에 다음 명령을 입력합니다.
      cd \Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker
    3. 다음을 입력하여 솔루션을 빌드합니다.
      [C#]
      msbuild InventoryTracker.sln
      [Visual Basic]
      msbuild InventoryTracker_VB.sln

    Visual Studio 2005를 사용할 경우 다음을 수행합니다.

    1. 선택한 솔루션 파일(InventoryTracker.sln 또는 InventoryTracker_VB.sln)을 엽니다.
    2. F6 키를 눌러 솔루션을 빌드합니다.
  2. AddSubscribers.exe를 실행합니다.

    이 파일의 기본 위치는 C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\AddSubscribers\language\AddSubscribers\bin\Debug입니다.

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

    이 파일의 기본 위치는 C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\AddSubscriptions\language\AddSubscriptions\bin\Debug입니다.

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

3단계: 이벤트 트리거

  1. SQL Server Management Studio의 파일 메뉴에서 열기를 선택한 후 파일을 선택합니다.

  2. 파일 대화 상자에서 UpdateProductInventory.sql을 엽니다.

    이 파일의 기본 위치는 C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\SQLScripts입니다.

    이 스크립트는 AdventureWorks 데이터베이스에 업데이트 트리거를 추가한 다음 NSRulesEvaluator 로그인에 데이터베이스 사용 권한을 부여합니다.

  3. 데이터베이스 엔진에 연결 대화 상자가 나타나면 연결 정보를 입력하고 연결을 클릭합니다.

4단계: 알림 보기

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

  2. Windows 탐색기를 사용하여 InventoryTracker 예제의 Notifications 폴더로 이동합니다. 파일 기반 알림을 포함하는 FileNotifications.txt라는 파일을 볼 수 있습니다.

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

5단계: 재고 다시 설정

  1. SQL Server Management Studio의 파일 메뉴에서 열기를 선택한 후 파일을 선택합니다.

  2. 파일 대화 상자에서 ResetProductInventory.sql을 엽니다.

    이 파일의 기본 위치는 C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\SQLScripts입니다.

    이 스크립트는 AdventureWorks 데이터베이스를 이전 상태로 되돌려 예제를 다시 실행할 수 있도록 합니다.

  3. 데이터베이스 엔진에 연결 대화 상자가 나타나면 연결 정보를 입력하고 연결을 클릭합니다.

예제 제거

다음 절차에 따라 재고 추적 프로그램 예제를 제거하십시오.

재고 추적 프로그램 예제를 제거하려면

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

  2. InventoryTrackerInstance를 마우스 오른쪽 단추로 클릭한 다음 중지를 클릭합니다.

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

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

참고 항목

관련 자료

SQL Server Notification Services 예제

도움말 및 정보

SQL Server 2005 지원 받기

변경 내역

릴리스 내역

2006년 4월 14일

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

2005년 12월 5일

변경된 내용
  • 키 파일의 이름 및 위치를 포함하여 키 파일 생성 방법에 대한 정보를 변경했습니다.
  • 규칙 계산기 계정 보안을 위한 최선의 구현 방법에 대한 정보를 추가했습니다.