Расписание хранимой процедуры в Microsoft SQL Server 2008 R2

Я должен запускать хранимую процедуру ежедневно в определенное время. Я боролся со службой Windows, и после неудачных попыток я начал искать расписание задания SQL или расписание события.

Чтобы запланировать задание SQL Server, мне пришлось создать его с помощью агента SQL Server. Я работаю над Microsoft SQL Server 2008 R2 Express (с расширенными службами) в Windows и не смог найти агента SQL Server, хотя у меня есть доступ администратора (вошел в систему с проверкой подлинности Windows).

В данном сценарии, как лучше всего запланировать хранимую процедуру и как мне это сделать?


comment
Редакция Express не имеет агента SQL Server. Вам потребуется найти другой способ его запуска (например, с помощью приложения командной строки, которое можно запланировать с помощью планировщика Windows), или выполнить обновление. на другой выпуск SQL Server, который поддерживает агент SQL Server.   -  person marc_s    schedule 25.06.2014
comment
Каков контекст попытки запланировать выполнение хранимой процедуры? Связано ли это с веб-приложением (например, отправка электронных писем новым пользователям)? ... ночной пакетный процесс (например, анализ данных для регулярных отчетов)? Немного больше контекста может помочь другим найти решение, которое работает для вас.   -  person László Koller    schedule 01.07.2014
comment
Хранимая процедура запрашивает одну таблицу, группирует данные по дате и записывает их в другую таблицу. Дата начала и окончания предоставляются хранимой процедуре, и цель состоит в том, чтобы запускать эту процедуру ежедневно, где дата начала — текущая дата, а дата окончания — завтрашняя дата.   -  person Sarah    schedule 02.07.2014


Ответы (3)


Есть один способ, которым вы можете запланировать процедуру, используя другой SP. Создайте новый SP, как показано ниже:

CREATE SP1
AS
WHILE (1)
BEGIN
    WAITFOR TIME '22:20';   -- Your Time
    EXECUTE 'Your SP Name'
END;
GO

Вы можете использовать обработку ошибок в соответствии с вашими требованиями.

person KrushnaKPawar    schedule 25.06.2014
comment
кто будет выполнять этот процесс - person Azar; 25.06.2014

Агент SQL-сервера содержит три внутренних таблицы для хранения внешних данных при создании задания.

sysjobs
sysjobschedules
sysjobsteps

Введите информацию, связанную с заданием, в sysjobs, укажите информацию о расписании в таблице расписаний и укажите свой код sql в таких шагах, как exec procname. Обратите внимание, что его следует обновлять только в базе данных msdb.

person Azar    schedule 25.06.2014
comment
У меня нет агента SQL Server. Любые указатели? Я не могу обновить версию SQL на сервере. - person Sarah; 25.06.2014

Поскольку SQL Server Express не включает агент SQL Server, вы не сможете планировать задания SQL непосредственно в SQL Server. Однако это не означает, что вы не можете планировать запуск заданий.

Используйте 1_. Это инструмент командной строки. (Запустите sqlcmd /? в командном окне, и он покажет вам точный синтаксис командной строки.)

Например, вы можете использовать встроенный планировщик заданий Windows для планирования и запуска определенной задачи командной строки с использованием доверенного соединения (аргумент -E):

sqlcmd -S {Server}\{SqlExpressInstance} -E -d {Database} -Q "EXECUTE {StoredProcedure}"

... Или используя определенные учетные данные для входа и пароль (аргументы -U и -P):

sqlcmd -U {LoginId} -P {Password} -S {Server}\{SqlExpressInstance} -d {Database} -Q "EXECUTE {StoredProcedure}"

Дополнительные сведения об использовании sqlcmd см. по адресу Использование утилиты sqlcmd (SQL Server Express)

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

Удачи!

person László Koller    schedule 02.07.2014