Образец Inventory Tracker

Изменения: 17 июля 2006 г.

Образец Inventory Tracker показывает, как использовать условные действия, чтобы разрешить подписчикам определять свои собственные предложения в запросах своих подписок.

Сценарий

Необходимо обеспечить возможность уведомления служащих компании при изменении объемов складских запасов. Поскольку разные сотрудники ищут разные данные, например низкий объем запасов, высокий объем запасов или существенные изменения запасов, необходимо разрешить сотрудникам создавать свои собственные условия для подписок.

В этом образце каждый из подписчиков, Стефани и Дэвид, создает по подписке. В подписке Стефани указывается, что она хочет получать уведомление, когда складские запасы окончательной сборки продукта «Road-250 черный, 48» составляют 35 штук или менее. В подписке Дэвида указывается, что он хочет получать уведомления, когда складские запасы продукта «HL Crankarm» составляют 250 штук или менее.

События добавляются в систему триггером обновления в таблице AdventureWorks Production.Inventory. При обновлении данных учета складских запасов триггер направляет события приложению Inventory Tracker. В конце такта генератора, куда поступают события, приложение Inventory Tracker запускает правила, сравнивающие данные события с данными подписки, и формирует уведомления.

Уведомления отправляются подписчикам по электронной почте.

Языки

XML, XSLT, Transact-SQL, Microsoft Visual C# или Microsoft Visual Basic

Возможности

Образец Inventory Tracker использует следующие функции служб 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.
  • Служба SMTP, являющаяся компонентом служб IIS. В системах Microsoft Windows Server 2003 служба SMTP по умолчанию вместе с IIS не устанавливается. Указания по установке и использованию службы SMTP см. в документации по IIS.
    ms161543.note(ru-ru,SQL.90).gifПримечание.
    Перед запуском этого образца убедитесь, что служба SMTP остановлена. Остановка службы SMTP позволит сохранить сообщения на сервере и избежать отправки сообщений несуществующим подписчикам.

Построение образца

Для построения экземпляра необходимо выполнить следующие действия.

  • Создать имя входа SQL Server для оценки правил.
  • Создать экземпляр служб Notification Services.
  • Зарегистрировать экземпляр служб Notification Services.
  • Предоставить службе Windows разрешения на доступ к базе данных.
  • Создать триггеры и предоставить учетной записи, выполняющей оценку правил, разрешения на доступ к базе данных.

Следующие процедуры показывают, как выполнить каждую из этих задач для образца Inventory Tracker:

Шаг 1. Создайте имя входа SQL Server для оценки правил

  1. Откройте среду SQL Server Management Studio и подключитесь к экземпляру SQL Server.

    Если в приложении имеются правила, содержащие условные действия, то для выполнения действий по их оценке приложению требуется имя входа. Использование этого отдельного имени входа позволит ограничить набор данных, по которым подписчики могут создавать правила, а также защитить конфиденциальные данные.

    Перед созданием экземпляра служб Notification Services это имя входа должно существовать на сервере и должно отсутствовать в базе данных. В данном образце используется имя входа для проверки подлинности SQL Server NSRulesEvaluator. При разработке приложений можно использовать как проверку подлинности SQL Server, так и проверку подлинности Windows.

    ms161543.note(ru-ru,SQL.90).gifПримечание.
    При возможности используйте проверку подлинности Windows.
  2. В обозревателе объектов разверните узел Безопасность.

  3. Щелкните правой кнопкой мыши Имена входа и выберите пункт Создать имя входа.

  4. Выберите режим Проверка подлинности SQL Server.

    Эта учетная запись не используется для подключений к серверу. Она используется генератором служб Notification Services в экземпляре компонента Database Engine для оценки условий.

  5. В поле Имя входа введите NSRulesEvaluator.

    Введите пароль для имени входа NSRulesEvaluator.

  6. В поле База данных выберите AdventureWorks.

  7. Нажмите кнопку ОК.

    При появлении диалогового окна с уведомлением о том, что имя входа не имеет доступа к базе данных по умолчанию, нажмите кнопку ОК. После этого предоставьте разрешения на доступ к базе данных.

Шаг 2. Создайте экземпляр служб Notification Services

  1. В обозревателе объектов щелкните правой кнопкой мыши Службы Notification Services и выберите пункт Создать экземпляр служб Notification Services.

  2. В диалоговом окне Создание экземпляра служб Notification Services нажмите кнопку Обзор, перейдите к папке InventoryTracker, затем выберите файл InstanceConfig.xml.

  3. В окне Параметры введите значения для трех параметров:

    • SampleDirectory: путь к корневой папке для образца Inventory Tracker. Путь по умолчанию — «C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\».
    • SQLServer: имя экземпляра компонента Database Engine.
    • NotificationServicesHost: имя сервера, на котором выполняются службы Notification Services. Для выполнения образцов это имя должно являться именем локального компьютера.
  4. Установите флажок Включить экземпляр после его создания.

  5. Нажмите кнопку ОК.

  6. После того, как службы Notification Services закончат создание экземпляра, нажмите кнопку Закрыть.

Шаг 3. Зарегистрируйте экземпляр служб Notification Services

  1. В обозревателе объектов разверните узел «Службы Notification Services», щелкните правой кнопкой мыши пункт InventoryTrackerInstance, укажите пункт Задачи, затем выберите Зарегистрировать.

  2. В диалоговом окне Регистрация установите флажок Создать службу Windows. Служба Windows запустит на этом компьютере экземпляр служб Notification Services.

  3. В поле Вход в службу введите имя входа и пароль Windows. Это учетная запись Windows, под которой будет выполняться служба. Если для доступа к SQL Server используется проверка подлинности Windows, то служба Windows будет также использовать эту учетную запись для соединения с SQL Server.

  4. Если для доступа к SQL Server нужно использовать проверку подлинности SQL Server, то выберите пункт Проверка подлинности SQL Server в поле Проверка подлинности, а затем введите имя входа и пароль SQL Server.

    Рекомендуется использовать проверку подлинности Windows.

  5. Нажмите кнопку ОК.

  6. После того, как службы Notification Services закончат регистрацию экземпляра, нажмите кнопку Закрыть.

ms161543.note(ru-ru,SQL.90).gifПримечание.
Если образец служб Notification Services развертывается при помощи учетной записи, принадлежащей владельцу базы данных или системному администратору, разрешения SQL Server на учетную запись предоставлять не нужно. Предоставление этих разрешений завершится ошибкой, на которую можно не обращать внимания. Для обеспечения безопасности при развертывании приложений необходимо использовать учетные записи с наименьшими правами доступа.

Шаг 4. Предоставьте службе Windows разрешения на доступ к базе данных

  1. В обозревателе объектов разверните узел Безопасность.

  2. Если необходимо создать новую учетную запись службы Windows для входа в базу данных, щелкните правой кнопкой мыши пункт Имена входа, выберите команду Создать имя входа и создайте учетную запись.

    • Для использования проверки подлинности Windows выберите пункт Проверка подлинности Windows и введите учетную запись Windows, которая указывалась при регистрации экземпляра.
    • Для использования проверки подлинности 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. Если появилось диалоговое окно Соединение с компонентом Database Engine, введите данные для соединения и нажмите кнопку Соединить.

  4. Нажмите клавишу F5, чтобы выполнить инструкции Transact-SQL.

Создание файла ключа для строгого имени

Если файл ключа для строгого имени еще не создавался, создайте его следующим образом.

To generate a strong name key file

  1. Откройте командную строку Microsoft Visual Studio 2005. Нажмите кнопку Пуск, укажите пункты Все программы, Microsoft .NET Framework SDK v2.0 и выберите пункт Командная строка пакета SDK.

    -- или --

    Откройте командную строку Microsoft .NET Framework. Нажмите кнопку Пуск, укажите пункты Все программы, Microsoft .NET Framework SDK v2.0 и выберите пункт Командная строка пакета SDK.

  2. Используйте команду CD, чтобы сменить текущий каталог командной строки и перейти в каталог, в котором установлены образцы.

    ms161543.note(ru-ru,SQL.90).gifПримечание.
    Чтобы определить каталог, в котором установлены образцы, нажмите кнопку Пуск, укажите пункты Все программы, Microsoft SQL Server, Документация и учебные материалы, а затем выберите пункт Каталог образцов. Если использовался каталог установки по умолчанию, то образцы расположены в каталоге «<системный_диск>:\Program Files\Microsoft SQL Server\100\Samples».
  3. В командной строке выполните следующую команду, чтобы создать файл ключа:

    sn -k SampleKey.snk

    ms161543.note(ru-ru,SQL.90).gifВажно!
    Дополнительные сведения о паре ключей для строгого имени см. в статье по строгим именам и безопасности для платформы .NET Framework в центре разработчиков .NET в MSDN.

Выполнение образца

Чтобы запустить образец, выполните следующее.

  • Запустите экземпляр.
  • Добавьте подписчиков и подписки.
  • Удалите XML-файл, содержащий события.
  • Просмотрите итоговые уведомления.

В следующих процедурах показано, как выполнить эти задачи и затем просмотреть полученные уведомления.

Шаг 1. Запустите экземпляр

  1. В обозревателе объектов раскройте узел Службы Notification Services.

  2. Щелкните правой кнопкой мыши узел InventoryTrackerInstance и затем выберите пункт Запустить.

Шаг 2. Добавьте подписчиков и подписки

  1. Постройте решение Visual Studio InventoryTracker или InventoryTracker_VB.

    Если используется пакет Microsoft .NET Framework SDK, выполните следующее.

    1. В меню Пуск выберите пункт Все программы, затем выберите пункт Microsoft .NET Framework SDK v2.0 и выберите Командная строка пакета SDK.
    2. Перейдите к корневой папке образца Inventory Tracker. Введите следующую команду для размещения по умолчанию:
      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\язык\AddSubscribers\bin\Debug».

  3. Запустите файл AddSubscriptions.exe.

    C:\Program Files\Microsoft SQL Server\90\Samples\Notification Services\InventoryTracker\AddSubscriptions\язык\AddSubscriptions\bin\Debug.

ms161543.note(ru-ru,SQL.90).gifПримечание.
Для приложений рабочей среды или при выполнении приложения от учетной записи с ограниченными правами доступа в базах данных экземпляра и приложения добавьте имя входа 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. Если появилось диалоговое окно Соединение с компонентом Database Engine, введите данные для соединения и нажмите кнопку Соединить.

Шаг 4. Просмотрите уведомления

  1. Службам Notification Services понадобится около одной минуты для создания уведомлений.

  2. В проводнике Windows перейдите в папку Notifications образца Inventory Tracker. Необходимо найти файл с именем 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. Если появилось диалоговое окно Соединение с компонентом Database Engine, введите данные для соединения и нажмите кнопку Соединить.

Удаление образца

Для удаления образца Inventory Tracker используйте следующую процедуру.

Удаление образца Inventory Tracker

  1. В обозревателе объектов среды SQL Server Management Studio откройте папку служб Notification Services.

  2. Щелкните правой кнопкой мыши узел InventoryTrackerInstance, затем выберите Остановить.

  3. Щелкните правой кнопкой мыши узел InventoryTrackerInstance, укажите пункт Задачи, затем выберите Отменить регистрацию.

  4. Щелкните правой кнопкой мыши узел InventoryTrackerInstance, укажите пункт Задачи, затем выберите Удалить.

См. также

Другие ресурсы

Образцы служб SQL Server Notification Services

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

14 апреля 2006 г.

Добавленное содержимое
  • Добавлены сведения о запуске образцов с разрешениями владельца базы данных.

5 декабря 2005 г.

Измененное содержимое
  • Изменены инструкции по созданию файла ключа, в том числе его имя и расположение.
  • Добавлены сведения о способах обеспечения безопасности при обработке учетных записей.