Устранение неполадок хранимых процедур активации

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

Метод просмотра выходных данных хранимой процедуры активации

Компонент Database Engine записывает выходные данные активированной хранимой процедуры в журнал ошибок SQL Server. Если активированная хранимая процедура выдает неправильные результаты или не может считать данные из очереди, проверьте выходные данные процедуры в журнале ошибок SQL Server. Часто выходные данные хранимой процедуры предоставляют достаточно сведений, чтобы установить, в чем проблема.

Метод: Запуск хранимой процедуры в интерактивном сеансе

Одним из лучших методов устранения неполадок хранимых процедур активации служит выключение активации очереди и запуск хранимой процедуры из среды SQL Server Management Studio (или с помощью служебной программы sqlcmd). Запуск хранимой процедуры в интерактивном сеансе позволяет увидеть любые ошибки, возвращаемые хранимой процедурой.

Но если хранимая процедура активирована компонентом Database Engine, параметры базы данных и контекст безопасности могут измениться. Перед запуском процедуры укажите, с помощью инструкции EXECUTE AS, в качестве пользователя сеанса пользователя, указанного для активации, и установите параметры сеанса в значения по умолчанию для базы данных.

Дополнительные сведения см. в разделе Internal Activation Context.

Симптом: Хранимая процедура активации не запускается

На это может быть несколько обычных причин.

Могли быть изменены параметры очереди. С помощью представления каталога sys.service_queues убедитесь, что параметры очереди остались теми же. Особо убедитесь, что включена активация очереди, что в очереди указана правильная хранимая процедура и правильный участник безопасности. Убедитесь, что участник безопасности имеет разрешение выполнять хранимую процедуру.

Хранимая процедура может не запускаться или завершаться сразу после запуска. В этом случае проверьте, не присутствуют ли в журнале ошибок SQL Server ошибки хранимой процедуры. Можно также запустить хранимую процедуру из среды SQL Server Management Studio и проверить результаты.

Симптом: Сообщения остаются в очереди

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

  • Проверьте динамическое административное представление sys.dm_broker_queue_monitors, чтобы убедиться в активности монитора очереди. Если для очереди он не активен, активация очереди не включена (отсутствует значение ON). Включите активацию очереди (ON) с помощью инструкции ALTER QUEUE.
  • Состояние монитора очереди для данной очереди должно быть RECEIVES_OCCURRING. Если состояние монитора очереди другое, проверьте динамическое административное представление sys.dm_broker_activated_tasks, чтобы убедиться, что активированные задания для очереди в данное время выполняются. Если активированные задачи отсутствуют, то активация дает сбой. См. «Симптом: Хранимые процедуры активации не запускаются» в этом разделе.

Если активированные задачи выполняются, но сообщения остаются в очереди, то задача или не выполняет инструкцию RECEIVE, или дает сбой при фиксации транзакции. Проверьте, не присутствуют ли в журнале ошибок SQL Server ошибки хранимой процедуры. Неполадку может устранить остановка активации и запуск хранимой процедуры вручную.

См. также

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

sys.service_queues (Transact-SQL)
sys.dm_broker_queue_monitors
sys.dm_broker_activated_tasks

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

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