Задание может содержать один или более шагов. Существуют различные способы, которыми можно определить шаг задания. Следующий список содержит некоторые из них.
♦ Использование операторов Transact-SQL. Многие из шагов задания содержат операторы Transact-SQL. Например, если вам нужно автоматизировать резервное копирование базы данных или протокола транзакций, вы используете оператор backup database или оператор backup log соответственно.
♦ Операционная система (CmdExec). Некоторые другие задания могут потребовать выполнения утилиты SQL Server, которая обычно запускается вместе с соответствующей командой. Например, если вы собираетесь автоматизировать перемещение данных из вашего сервера базы данных в файл данных или наоборот, вы можете использовать утилиту Bcp.
♦ Вызов программы. В качестве еще одной альтернативы может быть нужным выполнение программы, которая была разработана с использованием Visual Basic или любого другого языка программирования. В этом случае вы всегда должны включать в путь букву устройства в текстовом поле Command при запуске такой программы. Это необходимо, потому что SQL Server Agent должен найти выполняемый файл.
Если задание содержит несколько шагов, важно определить, какие действия должны быть выполнены в случае сбоя. Обычно Database Engine запускает следующий шаг задания, если предыдущий шаг был успешно выполнен. Однако если шаг задания был выполнен со сбоем, любые следующие шаги этого задания не будут выполняться. Поэтому, вы всегда должны указывать, как часто каждый шаг должен повторяться в случае возникновения сбоя. И, разумеется, необходимо устранить причину ненормального завершения шага задания (очевидно, что повторное выполнение задания всегда будет приводить к той же самой ошибке, если ее не исправить).
Вы можете создавать задание, используя:
♦ SQL Server Management Studio;
♦ системные хранимые процедуры (sp_add_job или sp_add_jobstep).
SQL Server Management Studio используется в данном примере, где создается задание, которое выполняет резервное копирование базы данных sample. Для создания этого задания соединитесь с экземпляром Database Engine в Object Explorer, а затем разверните этот экземпляр. Разверните узел SQL Server Agent, щелкните правой кнопкой мыши по узлу Jobs, а затем выберите пункт New Job. (SQL Server Agent должен быть запущен.) Появится диалоговое окно New Job (рис. 18.2). На странице General введите имя задания в поле Name. Как вы можете видеть на рис. 18.2, для задания резервного копирования базы данных sample указано имя backup_sample.
В поле Owner щелкните мышью по кнопке с многоточием (...) и выберите владельца, ответственного за выполнение этого задания. Из раскрывающегося списка Category выберите категорию, которой принадлежит задание.
В примере на рис. 18.2 задание backup_sample не имеет категории, а владельцем является пользователь, который создал это задание. При желании вы можете добавить описание задания в поле Description.
Установите флажок Enabled, чтобы сделать задание доступным для выполнения.
Каждое задание должно иметь один или более шагов. Поэтому в дополнение к указанию свойств задания вы должны создать, по меньшей мере, один шаг прежде, чем сохраните это задание. Для определения одного или более шагов щелкните по странице Steps в диалоговом окне New Job и нажмите кнопку New. Появится диалоговое окно New Job Step (рис. 18.3). Введите имя для шага задания. В данном примере шаг называется backup. В раскрывающемся списке Туре выберите Transact-SQL script (T-SQL), потому что резервное копирование базы данных sample будет выполняться с помощью оператора Transact-SQL backup database.
В раскрывающемся списке Database выберите базу данных master, потому что эта системная база данных должна быть текущей базой данных, если вы хотите выполнять резервное копирование любой базы данных.
Вы можете вручную ввести оператор Transact-SQL в поле Command или вызвать его из файла. В первом случае введите следующие операторы:
EXEC sp_addumpdevice 'disk', 'backup_filel', 'C:\sample_backup' BACKUP DATABASE sample to backup_filel
Как вы, вероятно, догадались, системная процедура sp_addumpdevice добавляет устройство для резервной копии в экземпляр Database Engine. Для вызова оператора Transact-SQL из файла нажмите кнопку Open и выберите файл. Синтаксис оператора (операторов) может быть проверен, если нажать кнопку Parse.