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

Хранимые процедуры, помеченные для автоматического запуска, выполняются каждый раз при запуске SQL Server. Это может быть полезным для выполнения регулярных операций или при наличии хранимой процедуры, запущенной как фоновый процесс, которая должна выполняться постоянно. Кроме того, автоматический запуск хранимых процедур может применяться для выполнения системных или служебных задач в базе данных tempdb, таких как создание глобальной временной таблицы. Это поможет гарантировать наличие временной таблицы при повторном создании tempdb во время запуска SQL Server.

Автоматически выполняемая хранимая процедура работает с теми же разрешениями, что и члены предопределенной роли сервера sysadmin. Любое сообщение об ошибке, сформированное такой хранимой процедурой, записывается в журнал ошибок SQL Server. Не возвращайте никаких результирующих наборов из автоматически запускаемой хранимой процедуры. Эта хранимая процедура выполняется SQL Server, а не пользователем, поэтому результирующие наборы нигде не нужны.

Выполнение хранимых процедур начинается, когда база данных master восстанавливается при запуске.

Установка, очистка и контроль автоматического выполнения

Помечать хранимую процедуру для автоматического выполнения может только системный администратор (sa). Кроме того, хранимая процедура должна находиться в базе данных master, принадлежать пользователю sa и не иметь входных или выходных параметров.

Используйте процедуру sp_procoption чтобы:

  • обозначить существующую хранимую процедуру как автоматически запускаемую;

  • отменить выполнение процедуры при запуске SQL Server.

Хотя хранимые процедуры устанавливаются на автоматический запуск индивидуально, можно установить параметр просмотра автоматически запускаемых процедурSQL Server при помощи хранимой процедуры sp_configure, чтобы не допустить автоматического выполнения всех хранимых процедур при запуске SQL Server. Чтобы пропустить запуск этих процедур, укажите флаг трассировки 4022 в качестве параметра запуска. Если SQL Server запускается в минимальной конфигурации (при помощи флага -f), хранимые процедуры при запуске не выполняются. Дополнительные сведения см. в разделе Флаги трассировки.

Рекомендации

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

Установка и отмена автоматического запуска хранимой процедуры

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

См. также

Основные понятия