|
Программирование >> Программирование баз данных
©not ify level event log. Этот параметр позволяет определить для каждого типа извещения, при каких условиях передается данное извещение. Но для использования рассматриваемой хранимой процедуры необходимо задать некоторые значения констант для указания на то, когда должна происходить передача извещений. Эти константы перечислены в табл. 24.2. Таблица 24.2. Константы, определяющие время передачи извещения Значение константы Время передачи извещения 0 Передача не выполняется 1 После успешного выполнения задачи 2 После неудачного завершения задачи (это значение применяется по умолчанию), 3 После каждого выполнения задачи @job id. Этот параметр предоставляет возможность определить, какой идентификатор задания присваивается вновь созданному заданию; это значение требуется лишь в том случае, если предусмотрено создание шагов задания и расписания (расписаний) задания. При использовании рассматриваемого параметра необходимо учитывать два приведенных ниже важных соображения. Полученное значение следует присваивать переменной, чтобы обеспечить дальнейшее использование этого значения. Необходимо учитывать, что применяемая переменная должна относиться к типу uniqueidentifier, поскольку использование других, более известных типов для этой переменной не допускается. Следует отметить, что в качестве значений всех параметров, которые содержат в своем имени слово notify и не содержат слово level должно быть указано имя оператора, поэтому все необходимые учетные записи операторов должны быть созданы до вызова на выполнение этой хранимой процедуры. Итак, рассмотрим пример создания задания, чтобы проверить на практике ход осуществления этого процесса. Предположим, что требуется создать задание, почти идентичное созданному нами ранее с помощью программы Management Studio. Прежде всего необходимо создать задание верхнего уровня. Предположим, что все, касающееся передачи извещений, сводится к отправке сообщения при неудачном завершении в журнал Windows Event Log. Если же в конкретной СУБД установлено приложение Database Mail, то рекомендуем ввести параметры извещения, относящиеся к определенной учетной записи оператора. USE msdb DECLARE ©JobID uniqueidentifier EXEC sp add job @job name = TSQLCreatedTestJob, ©enabled = 1, @notify level eventlog = 3, @job id = ©JobID OUTPUT SELECT JobID is + CONVERT(varchar(128),@JobID) После этого вызовите приведенный выше код на выполнение, в результате чего должно быть получено следующее: JobID is 83369994-6C5B-45FA-A702-3511214A2F8A (1 row(s) affected) Обратите внимание на то, что конкретный полученный GUID задания будет отличаться от приведенного в данной книге (напомним, что по существу гарантируется уникальность значений GUID во времени и в пространстве). Предусмотрена возможность либо использовать установленное значение идентификатора задания, либо присвоить заданию имя, чтобы в дальнейшем указывать его, ссылаясь на это задание (сам автор пришел к выводу, что последний вариант намного проще, но при его осуществлении могут возникать проблемы, когда приходится иметь дело с несколькими серверами). Хранимая процедура spaddj observer Хранимая процедура sp add j observer позволяет намного ускорить и упростить работу. На предьщущем этапе было создано задание, но еще не указано, применительно к чему оно должно выполняться. Прежде всего необходимо отметить, что задание можно создать на одном сервере, не утратив при этом возможность при желании вызывать его на вьшолнение полностью на другом сервере. Для того чтобы назначить задание для выполнения на конкретном сервере, можно воспользоваться хранимой процедурой sp add j observer (которая также находится в базе данных msdb). Синтаксис вызова процедуры sp add j observer намного проще по сравнению с другими процедурами, рассматриваемыми в текущем разделе, и выглядит следующим образом: sp add jobserver [@job id =] <job id>[@job name =] <job name>, [@server name =] <server> Следует отметить, что необходимо указать либо идентификатор задания, либо имя задания, но не то и другое одновременно. Итак, чтобы назначить сервер для выполнения задания, достаточно вызвать на вьшолнение следующий краткий код: USE msdb EXEC sp add jobserver @job name = TSQLCreatedTestJob, @server name = (local) Обратите внимание на то, что в этом коде указан сервер (local), поэтому задавать действительное имя сервера не требуется. Вместо этого можно было бы также указать имя другого фактически существующего сервера SQL Server, предназначенного для выполнения задания. Хранимая процедура sp add job step На втором этапе планирования задания необходимо указать, какие именно задачи будут осуществляться в рамках задания. В настоящее время созданное задание, которое рассматривается в данном примере, представляет собой всего лишь пустую оболочку, поскольку в его состав не входят какие-либо задачи. Иначе говоря, фактически это задание на данный момент является полностью бесполезным. Но следует учитывать, что без описанного выше этапа создания задания невозможно обойтись, поскольку нельзя даже создать какой-либо шаг, не имея задания, которому он мог быть назначен. Таким образом, на данном этапе необходимо воспользоваться хранимой процедурой sp add jobstep для наполнения задания содержимым. По существу эта процедура добавляет задачу к заданию. Если в состав задания необходимо ввести несколько выполняемых шагов, то следует вызвать на данную конкретную хранимую процедуру такое же количество раз. Для вызова хранимой процедуры sp add j obstep применяется следующий синтаксис: sp add jobstep [@job id =] <job ID> [@job name =] <job name>] [, [@step id =] <step ID>] [, [@step name =] <step name>] [, [©subsystem =] <subsystem>] [, [©command =] <command>] [, [@additional parameters =] <parameters>] [, [©cmdexec success code =] <code>] [, [©on success action =] <success action>] [, [©on success step id =] <success step ID>] [, [©on fail action =] <fail action>] [, [©on fail step id =] <fail step ID>] [, [©server =] <server>] [, [©database name =] <database>] [, [@database user name =] <user>] [, [©retry attempts =] <retry attempts>] [, [©retry interval =] <retry interval>] [, [©os run j)riority =] <run priority>] [, [@output file name =] <file name>4 [, [©flags =] <flags>] Данная процедура содержит не так уж много параметров, не требующих описания, поэтому ее параметры подробно рассматриваются ниже. @job id или @job name. Особенность данной хранимой процедуры состоит в том, что при ее вызове должен быть задан тот или другой из рассматриваемых параметров, но не оба одновременно. Конкретный шаг может быть присоединен к заданию либо с использованием его идентификатора GUID (который должен быть сохранен после последнего вызова хранимой процедуры на выполнение), либо с указанием имени задания. @step id. Все шаги любого задания обозначаются идентификаторами. В СУБД SQL Server такие идентификаторы назначаются автоматически при вставке шагов в задание. Необходимо пояснить, по какой причине идентификаторы назначаются автоматически, несмотря на то, что для этого предусмотрен отдельный параметр. Дело в том, что идентификатор применяется в том случае, если шаг необходимо ввести в середину задания. В частности, если задание уже содержит шаги с номерами от 1 до 5 и выполняется вставка нового шага с идентификатором 3, то этот новый шаг помещается в позицию номер 3. Шаг, имевший перед этим номер 3, сдвигается в позицию 4, а номер каждого последующего шага увеличивается на 1, что позволяет освободить место для предьщущего шага. @step name. Этот параметр именуется в полном соответствии с его назначением. Он обозначает имя конкретной задачи (шага). Но следует учитывать, что для данного параметра не предусмотрено значение, применяемое по умолчанию. Имя шага должно быть указано явно. ©subsystem. Этот параметр тесно связан с категориями заданий и определяет, какая подсистема СУБД SQL Server (например, машина репликации; интерпретатор команд, т.е. приглашение к вводу команд DOS; или машина VB
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |