RSS
 

 

Как запланировать в MS SQL Expres автоматическую задачу?

03 Дек

Microsoft предоставляет нам бесплатный сервер SQL Server (например, редакций 2005 или 2008). Однако сервер этот, конечно, имеет некоторые ограничения. Среди них - отсутствие встроенного в версии Standard и выше агента (SQL Server Agent), который выполняет запланированные задания по расписанию.

И как теперь создавать автоматические задачи?

Впрочем, не все потеряно. Здесь я покажу - как обойти эту помеху.

1) Создаем файл SQL с набором T-SQL команд для выполнения.

Вот пример файла для резервного копирования 2х баз данных на жесткий диск (это только пример):

mybackup.sql

BACKUP DATABASE [mybase1]
TO DISK = N'c:\sqlbackup\mybase1.bak'
WITH INIT, NOUNLOAD, NAME = N'MyBase1 Backup', NOSKIP, STATS = 10, NOFORMAT;
 
BACKUP DATABASE [mybase2]
TO DISK = N'c:\sqlbackup\mybase2.bak'
WITH INIT, NOUNLOAD, NAME = N'MyBase2 Backup', NOSKIP, STATS = 10, NOFORMAT;

Естественно, помимо резервного копирования можно использовать любые другие команды Transact-SQL.

2) Теперь создаем задачу в планировщике заданий Windows.

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

Windows 2003: Пуск -> Панель управления -> Назначенные задания
Windows 2008: Пуск -> Администрирование -> Планировщик заданий

И добавляем новую задачу. Имя задачи пишите какое угодно. Параметры запуска (триггеры) - указывайте такие, какие Вы указали бы для SQL Agent. Например, запускать каждый день в час Х, или как-то как Вам нужно.

В строчке выполнения (т.е. какую программу запустить или какую команду выполнить) пишите запуск в таком формате:

sqlcmd -S 192.168.0.1\SQLEXPRESS -U sa -P mysuperpassword -i c:\path_to_script\mybackup.sql -o c:\path_to_script\mybackup.log

Здесь:

  • -S 192.168.0.1\SQLEXPRESS : здесь укажите IP адрес сервера, на котором крутится SQL Express, и Instance-имя этого сервера. Для установки по-умолчанию Instance-имя для SQL Express сервера - это SQLEXPRESS (в отличие от Standard-установки, у которой Default-имя инстанции - пустое).
  • -U sa : имя пользователя, под которым выполнять скрипт. Вместо "sa" можно (и желательно) указывать имя пользователя, который имеет право на выполнение указанных в mybackup.sql или другом SQL-Script файле операций. Т.е. для, например, резервного копирования Вы можете создать отдельного юзера в MS SQL Server, который будет иметь право только на бекапы и все.
  • -P mysuperpassword : пароль этого юзера
  • -i c:\... : путь и имя файла с набором T-SQL команд (mybackup.sql в нашем случае)
  • -o c:\... : путь и имя файла, куда вываливать сообщения (логи) по данной операции

Ну и все. Теперь сохраняете задачу планировщика Windows и проверяете. Запускаться она будет как обычная любая задача, при этом выполняя набор команд T-SQL вместо SQL Agent.

Менее удобно, конечно, чем писать это все прямо в оснастке SQL Server, но зато бесплатно.


 
 

Метки: , , , , 03.12.2011