Разрешение общих проблем служб Notification Services

Корпорация Майкрософт составила следующий список вопросов и решений, часто необходимых пользователям Notification Services.

ms172473.note(ru-ru,SQL.90).gifВажно!
При устранении неполадок в приложении служб Notification Services вначале обратитесь к журналу приложений в средстве просмотра событий Windows. События в журнале приложений часто являются наилучшим средством определения источника проблем с приложением.

Устранение неполадок развертывания и администрирования

Сбой создания экземпляра в связи с ошибкой истечения времени ожидания

Процессы, создающие экземпляр служб Notification Services, выполняют несколько задач, и каждая задача имеет ограничение по времени. Процесс создания базы данных обычно занимает больше времени, чем остальные операции. Ограничение по времени этой операции составляет 10 минут, этого обычно более чем достаточно. Однако если в конфигурации экземпляра или определениях приложений заданы очень большие размеры баз данных (несколько гигабайтов), то время ожидания процесса создания может истечь; при этом отображается сообщение об истечении времени ожидания.

Чтобы успешно создать экземпляр, необходимо уменьшить размеры файлов баз данных в файле определения приложения (ADF) и файле конфигурации экземпляра (ICF), а затем создать экземпляр. После этого можно увеличить размеры файлов баз данных с использованием среды SQL Server Management Studio или инструкций языка Transact-SQL.

Сбой создания экземпляра в связи с переполнением журнала транзакций

При добавлении полного или почти полного журнала создание экземпляра служб Notification Services может окончиться сбоем. Увеличьте значения size и maxsize журнала транзакций, а затем повторите попытку.

Сбой обновления экземпляра

Обновление экземпляра служб Notification Services может закончиться сбоем в связи с ошибками в определении приложений или конфигурации экземпляра. Перед обновлением экземпляра необходимо проверить все XML-файлы, чтобы снизить риск возникновения этой ошибки. Если ошибка все же возникает, то исправьте файл и повторите попытку обновления.

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

Дополнительные сведения об обновлении экземпляра см. в разделе Обновление свойств экземпляра. Дополнительные сведения об обновлении приложения см. в разделе Обновление приложения.

Не запускается служба Windows

Если используется служба Windows NS$имя_экземпляра для запуска компонентов ядра служб Notification Services и эта служба Windows не запускается, то может быть проблема в неправильном пароле службы; имя экземпляра, попытка запуска которого производится, может не точно совпадать с именем экземпляра служб Notification Services; базы данных могут быть недоступны или учетная запись пользователя Windows, под которой был настроен запуск службы, может не иметь разрешений на вход в систему в качестве службы. Для решения проблемы попробуйте выполнить следующие действия:

  • **Проверьте, что учетная запись службы входит в группу SQLServer2005NotificationServicesUser$.**ИмяКомпьютера в Windows. Члены группы SQLServer2005NotificationServicesUser$ИмяКомпьютера имеют разрешения на чтение и выполнение двоичных файлов служб Notification Services, включая NSService.exe.
  • Сбросьте пароль Windows. При использовании команд служб Notification Services для настройки пароля службы, когда пароль содержит специальные символы или был неправильно введен, служба NS$имя_экземпляра не запустится.
    Чтобы устранить эту ошибку, обновите пароль, используя приложение «Службы»:
    1. На панели управления выберите пункт Администрирование.
    2. Выберите пункт Службы.
    3. Щелкните правой кнопкой мыши службу **NS$**имя_экземпляра (имя_экземпляра представляет собой название экземпляра служб Notification Services), а затем выберите пункт Свойства.
    4. Перейдите на вкладку Вход, введите пароль в текстовые поля Пароль и Подтверждение пароля. Нажмите кнопку ОК.
    5. Щелкните правой кнопкой мыши службу и выберите пункт Запустить.
  • Проверьте базы данных. Если служба не имеет доступа к базам данных экземпляра и приложений, то она не запустится.
    • Имя базы данных в реестре экземпляра правильно?
    • Экземпляр компонента Database Engine, в котором размещены базы данных экземпляра и приложений, запущен?
    • Базы данных экземпляра и приложений доступны?
    • Существуют сетевые проблемы, не дающие службе возможности доступа к базам данных?
  • Запустите службу из приложения «Службы». При запуске службы по команде net start символы в командной строке должны совпадать с символами Юникода в файле конфигурации. Если символы не совпадают, то экземпляр не может запуститься.
    Чтобы устранить эту ошибку, запустите службу, используя приложение «Службы» панели управления Windows, выполните следующие действия.
    1. На панели управления выберите пункт Администрирование.
    2. Выберите пункт Службы.
    3. Щелкните правой кнопкой мыши службу **NS$**имя_экземпляра и выберите пункт Запустить.

Ошибки не записываются в журнал приложений

Если ядро служб Notification Services не запускается, но в журнале приложений отсутствуют ошибки, указывающие на причину, то журнал приложений может быть переполнен. Чтобы заново настроить журнал приложений, выполните следующее:

  1. На панели управления выберите пункт Администрирование.
  2. Выберите пункт Средство просмотра событий.
  3. Щелкните правой кнопкой мыши поле Приложение, а затем выберите пункт Свойства.
  4. Выполните одно или оба следующих действия:
    • Увеличьте значение Максимальный размер журнала.
    • Установите флажок Перезаписывать события при необходимости.

В журнале приложений появляются непредвиденные ошибки

При получении непредвиденных ошибок в журнале приложений попытайтесь перезапустить ядро служб Notification Services.

Например, при удалении приложения из экземпляра при запущенной службе Windows и последующем появлении в журнале событий ошибок для удаленного приложения перезапуск службы Windows должен привести к прекращению появления этих ошибок.

Дополнительные сведения см. в разделе Запуск и остановка экземпляров служб Notification Services.

Устранение неполадок коллекции событий

Невозможно переслать события приложению

При устранении неполадок коллекции событий проверьте следующее:

  • При использовании внутрипроцессного поставщика событий проверьте, что ядро служб Notification Services, запускающее поставщика событий, запущено.
  • Убедитесь, что коллекция событий включена. Можно быстро просмотреть состояние компонентов экземпляра путем запуска команды nscontrol status. Если события отключены или ожидают включения, то события переслать невозможно.
    Дополнительные сведения о просмотре состояния см. в разделе Просмотр состояния экземпляров, приложений и компонентов.
    Дополнительные сведения о включении и отключении компонентов см. в разделе Включение и отключение экземпляров, приложений или компонентов.
  • Проверьте, что учетная запись, используемая для запуска поставщика событий, имеет разрешения NSEventProvider в базах данных экземпляра и приложений.

Сбой поставщика событий наблюдателя файловой системы

Сбой поставщика событий наблюдателя файловой системы может возникать при повреждении счетчиков производительности на сервере. Следующая ошибка в журнале событий свидетельствует о повреждении счетчика производительности:

Идентификатор события: 2980

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

  1. Если экземпляр запущен, остановите его. Дополнительные сведения см. в разделе Запуск и остановка экземпляров служб Notification Services.
  2. Закройте все приложения, отправляющие запросы счетчикам производительности служб Notification Services, например системный монитор.
  3. Перерегистрируйте экземпляр. Дополнительные сведения см. в разделе Обновление сведений реестра.

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

Устранение неполадок создания и доставки уведомлений

Создаются дублирующиеся уведомления

Если подписчики получают дублирующиеся уведомления, то проверьте коллекцию и использование событий:

  • Проверьте, что правила создания уведомлений не имеют прямого доступа к таблице уведомлений, когда они должны иметь доступ к представлению с именем, соответствующим классу уведомлений. Это представление возвращает только текущий набор событий, в то время как таблица уведомлений содержит все события, которые не были удалены посредством очистки.
    Например, если имя класса событий — StockEvent, то используйте представление StockEvent в правиле подписки, а не таблицу NSStockEventEvents.
  • При получении событий из другого источника, например из хроники событий или внешней таблицы, запрос должен содержать логику для выбора только тех данных, которые необходимо использовать для создания уведомлений. Например, может потребоваться включить события, пересланные за последние 24 часа, или события, имеющие конкретное значение в столбце. Инструкции в правилах подписок могут изменять значения в источнике событий, чтобы можно было отслеживания использование событий.
  • Проверьте, что одно и то же событие не пересылается многократно.

Дополнительные сведения о написании правил подписок см. в разделе Определение правил подписок.

Уведомления не создаются или не доставляются

Если уведомления не отправляются из приложения, то проверьте следующее:

  • Ядро служб Notification Services, запускающее компонент генератора, запущено? Оно включено?
  • Какие-либо события доступны?
    Запустите хранимую процедуру NSDiagnosticEventClass в базе данных экземпляра. Просмотрите столбец EventBatchesCollectedCount, чтобы определить ожидаемое поступление событий.
  • Подписки присутствуют?
    Используйте представление NSимя_класса_подпискиView в базе данных приложений для проверки наличия в приложении подписок для оценки.
  • Расписание плановых подписок правильное?
    Используйте представление NSимя_класса_подпискиView в базе данных приложений или запустите хранимые процедуры NSScheduledSubscriptionList и NSScheduledSubscriptionDetails в базе данных приложений для просмотра подробных сведений о подписках.
  • Устройства подписчиков, на которые ссылаются уведомления, существуют?
    В правилах подписок необходимо предоставить идентификатор подписчика и имя устройства подписчика. Имя устройства подписчика должно совпадать с именем устройства подписчика, определенного для этого подписчика. Чтобы просмотреть устройства подписчиков, используйте хранимую процедуру NSSubscriberDeviceView в базе данных экземпляра.
  • Время ожидания правил истекает?
    Если истекает время ожидания правил подписок, которые формируют уведомления, то приложение не будет создавать уведомления. Проверьте эффективность правил, наличие соответствующих индексов, определенных для данных события и подписки, запуск очистки для удаления старых данных и отсутствие блокировки правил другими процессами, запущенными на сервере. Дополнительные сведения о разработке правил подписок см. в разделе Определение правил подписок.
  • Уведомления создаются?
    Запустите хранимую процедуру NSDiagnosticNotificationClass в базе данных экземпляра, чтобы проверить создание уведомлений. Просмотрите столбец NotificationsGenerated, чтобы определить интервал их ожидаемого создания. При отсутствии уведомлений, возможно, что отсутствуют события или подписки или правила соответствия классов подписок не вставляют никакие уведомления в функцию классов уведомлений. Дополнительные сведения о правилах см. в разделе Определение правил подписок.
  • Имеется сбой уведомлений?
    Запустите хранимую процедуру NSDiagnosticFailedNotifications, чтобы проверить сбой уведомлений.
  • Уведомления направляются в правильный канал доставки?
    Проверьте, что приложение определяет правильные протоколы для класса уведомлений и что подписки, добавленные к приложению, используют правильный канал доставки.
  • Каналы доставки функционируют?
    Запустите отчет NSDiagnosticDeliveryChannel для проверки работоспособности каналов доставки.
  • Распространители включены?
    Дополнительные сведения о включении и отключении компонентов см. в разделе Включение и отключение экземпляров, приложений или компонентов.

Возникают общие ошибки доставки

Некоторые ошибки доставки фактически могут быть ошибками настройки. Например, при неправильной настройке канала доставки SMTP, когда Notification Services пытаются доставить уведомление, используя канал доставки, может быть получено сообщение, подобное следующему:

Общая ошибка уведомлений, связанная с доставкой по SMTP

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

Сбой доставки по SMTP

При использовании протокола SMTP Internet Information Services (IIS) с локальной службой SMTP IIS службы Notification Services должны просмотреть каталог IIS для определения адресатов уведомлений. К этим данным имеют доступ только администраторы.

Чтобы использовать локальную службу SMTP IIS, учетная запись, используемая для запуска компонента ядра распространителя, должна быть включена в локальную группу Administrators.

Истекает время ожидания распространителя

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

Чтобы решить эту проблему, выключите ведение журнала. Дополнительные сведения см. в разделе Установка настроек выполнения протокола доставки.

Устранение неполадок чистильщика

Данные не удаляются, что приводит к большому размеру таблиц событий и уведомлений

Если данные не удаляются из базы данных приложений так, как ожидается, то проверьте следующее:

  • В определении приложения содержится расписание очистки? Дополнительные сведения см. в разделе Настройка удаления данных.
  • Задан подходящий срок хранения? (Чем больше срок хранения, тем больше данных накапливается в таблицах.)
  • Очистка запускается в период низкой активности системы? Если нет, что для очистки может не хватать системных ресурсов для эффективного удаления данных.
    Помните, что время начала представляет собой значение времени по Гринвичу. Например, если время начала задано, как 02:00:00, то это означает 2:00 ночи по Гринвичу. Для задания 2:00 ночи по местному времени добавьте или вычтите разницу между вашим часовым поясом и Гринвичем. Например, разница между временем тихоокеанского часового пояса и временем по Гринвичу составляет 8 часов. Для запуска очистки в 2:00 ночи по тихоокеанскому времени задайте время начала 10:00:00.
  • Продолжительность очистки достаточна? В зависимости от объема данных может потребоваться запуск очистки в течение более длительных периодов времени.

Чтобы оценить производительность очистки, используйте следующие ресурсы:

  • Запустите хранимую процедуру NSSnapshotApplications, чтобы определить время последнего запуска очистки и количество удаленных событий и уведомлений. Дополнительные сведения см. в разделе NSSnapshotApplications (Transact-SQL).
  • Осуществите мониторинг объекта производительности NS$имя_экземпляра: Vacuumer с использованием средства «Производительность» панели управления Windows. Дополнительные сведения см. в разделе Объект NS$имя_экземпляра: Vacuumer, объект.

Устранение неполадок веб-приложений

Приложение управления подписками не имеет доступа к экземпляру служб Notification Services

Приложение управления подписками должно быть способно находить и получать доступ к базам данных экземпляра и приложений. Для этого экземпляр должен быть зарегистрирован на сервере, на котором запускается приложение, а учетная запись, используемая приложением, должна быть добавлена к роли NSSubscriberAdmin в базах данных экземпляра и приложений. Дополнительные сведения см. в разделе Развертывание интерфейса управления подписками.

См. также

Задачи

Часто задаваемые вопросы о службах Notification Services
Настройка ведения журнала событий служб Notification Services
Использование сообщений о событиях

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

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