

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usando um pacote AWS SCT de extensão para emular o SQL Server Agent no PostgreSQL
<a name="CHAP_Source.SQLServer.ToPostgreSQL.ExtensionPack.Agent"></a>

SQL Server Agent é um serviço do Microsoft Windows que executa trabalhos do SQL Server. SQL Server Agent pode executar trabalhos agendados em resposta a um evento específico ou sob demanda. Para obter mais informações sobre o SQL Server Agent, consulte a [documentação técnica da Microsoft](https://docs.microsoft.com/en-us/sql/ssms/agent/sql-server-agent?view=sql-server-ver15).

O PostgreSQL não tem um equivalente para SQL Server Agent. Para emular os recursos do SQL Server Agent, AWS SCT cria um pacote de extensão. Este pacote de extensão usa AWS Lambda e Amazon CloudWatch. AWS Lambda implementa a interface que você usa para gerenciar agendamentos e executar trabalhos. A Amazon CloudWatch mantém as regras de programação.

AWS Lambda e a Amazon CloudWatch usam um parâmetro JSON para interagir. Esse parâmetro JSON tem a seguinte estrutura.

```
{
    "mode": mode,
    "parameters": {
        list of parameters
    },
    "callback": procedure name
}
```

No exemplo anterior, *`mode`* é o tipo da tarefa e `list of parameters` é um conjunto de parâmetros que dependem do tipo da tarefa. Além disso, `procedure name` é o nome do procedimento executado após a conclusão da tarefa.

AWS SCT usa uma função Lambda para controlar e executar trabalhos. A CloudWatch regra inicia a execução do trabalho e fornece as informações necessárias para iniciar o trabalho. Quando a CloudWatch regra é acionada, ela inicia a função Lambda usando os parâmetros da regra.

Para criar um trabalho simples que chame um procedimento, use o formato a seguir.

```
{
    "mode": "run_job",
    "parameters": {
        "vendor": "mysql",
        "cmd": "lambda_db.nightly_job"
    }
}
```

Para criar um trabalho com várias etapas, use o formato a seguir.

```
{
    "mode": "run_job",
    "parameters": {
        "job_name": "Job1",
        "enabled": "true",
        "start_step_id": 1,
        "notify_level_email": [0|1|2|3],
        "notify_email": email,
        "delete_level": [0|1|2|3],
        "job_callback": "ProcCallBackJob(job_name, code, message)",
        "step_callback": "ProcCallBackStep(job_name, step_id, code, message)"
    },
    "steps": [
        {
            "id":1,
            "cmd": "ProcStep1",
            "cmdexec_success_code": 0,
            "on_success_action": [|2|3|4],
            "on_success_step_id": 1,
            "on_fail_action": 0,
            "on_fail_step_id": 0,
            "retry_attempts": number,
            "retry_interval": number
        },
        {
            "id":2,
            "cmd": "ProcStep2",
            "cmdexec_success_code": 0,
            "on_success_action": [1|2|3|4],
            "on_success_step_id": 0,
            "on_fail_action": 0,
            "on_fail_step_id": 0,
            "retry_attempts": number,
            "retry_interval": number
        },
        ...
]
}
```

Para emular o comportamento do SQL Server Agent no PostgreSQL, AWS SCT o pacote de extensões também cria as tabelas e os procedimentos a seguir.

## Tabelas que emulam o SQL Server Agent no PostgreSQL
<a name="CHAP_Source.SQLServer.ToPostgreSQL.ExtensionPack.Agent.Tables"></a>

Para emular o SQL Server Agent, o pacote de extensão usa as seguintes tabelas:

**sysjobs**  
Armazena as informações sobre os trabalhos.

**sysjobsteps**  
Armazena as informações sobre as etapas de um trabalho.

**sysschedules**  
Armazena as informações sobre os cronogramas de trabalho.

**sysjobschedules**  
Armazena as informações de cronograma de trabalhos individuais. 

**sysjobhistory**  
Armazena as informações sobre as execuções de trabalhos programados.

## Procedimentos que emulam o SQL Server Agent no PostgreSQL
<a name="CHAP_Source.SQLServer.ToPostgreSQL.ExtensionPack.Agent.Procedures"></a>

Para emular o SQL Server Agent, o pacote de extensão usa os seguintes procedimentos:

**sp\$1add\$1job**  
Adiciona um novo trabalho.

**sp\$1add\$1jobstep**  
Adiciona uma etapa a um trabalho.

**sp\$1add\$1schedule**  
Cria uma nova regra de agendamento na Amazon CloudWatch. Você pode usar esse cronograma com qualquer número de trabalhos.

**sp\$1attach\$1schedule**  
Define um cronograma para o trabalho selecionado.

**sp\$1add\$1jobschedule**  
Cria uma regra de agendamento para um trabalho na Amazon CloudWatch e define a meta para essa regra.

**sp\$1update\$1job**  
Atualiza os atributos do trabalho criado anteriormente.

**sp\$1update\$1jobstep**  
Atualiza os atributos da etapa em um trabalho.

**sp\$1update\$1schedule**  
Atualiza os atributos de uma regra de agendamento na Amazon CloudWatch.

**sp\$1update\$1jobschedule**  
Atualiza os atributos do cronograma para o trabalho especificado.

**sp\$1delete\$1job**  
Exclui um trabalho.

**sp\$1delete\$1jobstep**  
Exclui uma etapa do trabalho de um trabalho.

**sp\$1delete\$1schedule**  
Exclui um cronograma.

**sp\$1delete\$1jobschedule**  
Exclui a regra de agendamento para o trabalho especificado da Amazon CloudWatch.

**sp\$1detach\$1schedule**  
Remove uma associação entre um cronograma e um trabalho.

**get\$1jobs, update\$1job**  
Procedimentos internos que interagem com AWS Elastic Beanstalk.

**sp\$1verify\$1job\$1date, sp\$1verify\$1job\$1time, sp\$1verify\$1job, sp\$1verify\$1jobstep, sp\$1verify\$1schedule, sp\$1verify\$1job\$1identifiers, sp\$1verify\$1schedule\$1identifiers**  
Procedimentos internos que verificam as configurações.

## Sintaxe para procedimentos que emulam o SQL Server Agent no PostgreSQL
<a name="CHAP_Source.SQLServer.ToPostgreSQL.ExtensionPack.Agent.Syntax"></a>

O procedimento `aws_sqlserver_ext.sp_add_job` no pacote de extensão emula o procedimento `msdb.dbo.sp_add_job`. Para obter mais informações sobre o procedimento do SQL Server Agent de origem, consulte a [documentação técnica da Microsoft](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-add-job-transact-sql?view=sql-server-ver15). 

```
par_job_name varchar,
par_enabled smallint = 1,
par_description varchar = NULL::character varying,
par_start_step_id integer = 1,
par_category_name varchar = NULL::character varying,
par_category_id integer = NULL::integer,
par_owner_login_name varchar = NULL::character varying,
par_notify_level_eventlog integer = 2,
par_notify_level_email integer = 0,
par_notify_level_netsend integer = 0,
par_notify_level_page integer = 0,
par_notify_email_operator_name varchar = NULL::character varying,
par_notify_netsend_operator_name varchar = NULL::character varying,
par_notify_page_operator_name varchar = NULL::character varying,
par_delete_level integer = 0,
inout par_job_id integer = NULL::integer,
par_originating_server varchar = NULL::character varying,
out returncode integer
```

O procedimento `aws_sqlserver_ext.sp_add_jobstep` no pacote de extensão emula o procedimento `msdb.dbo.sp_add_jobstep`. Para obter mais informações sobre o procedimento do SQL Server Agent de origem, consulte a [documentação técnica da Microsoft](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-add-jobstep-transact-sql?view=sql-server-ver15). 

```
par_job_id integer = NULL::integer,
par_job_name varchar = NULL::character varying,
par_step_id integer = NULL::integer,
par_step_name varchar = NULL::character varying,
par_subsystem varchar = 'TSQL'::bpchar,
par_command text = NULL::text,
par_additional_parameters text = NULL::text,
par_cmdexec_success_code integer = 0,
par_on_success_action smallint = 1,
par_on_success_step_id integer = 0,
par_on_fail_action smallint = 2,
par_on_fail_step_id integer = 0,
par_server varchar = NULL::character varying,
par_database_name varchar = NULL::character varying,
par_database_user_name varchar = NULL::character varying,
par_retry_attempts integer = 0,
par_retry_interval integer = 0,
par_os_run_priority integer = 0,
par_output_file_name varchar = NULL::character varying,
par_flags integer = 0,
par_proxy_id integer = NULL::integer,
par_proxy_name varchar = NULL::character varying,
inout par_step_uid char = NULL::bpchar,
out returncode integer
```

O procedimento `aws_sqlserver_ext.sp_add_schedule` no pacote de extensão emula o procedimento `msdb.dbo.sp_add_schedule`. Para obter mais informações sobre o procedimento do SQL Server Agent de origem, consulte a [documentação técnica da Microsoft](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-add-schedule-transact-sql?view=sql-server-ver15). 

```
par_schedule_name varchar,
par_enabled smallint = 1,
par_freq_type integer = 0,
par_freq_interval integer = 0,
par_freq_subday_type integer = 0,
par_freq_subday_interval integer = 0,
par_freq_relative_interval integer = 0,
par_freq_recurrence_factor integer = 0,
par_active_start_date integer = NULL::integer,
par_active_end_date integer = 99991231,
par_active_start_time integer = 0,
par_active_end_time integer = 235959,
par_owner_login_name varchar = NULL::character varying,
*inout par_schedule_uid char = NULL::bpchar,*
inout par_schedule_id integer = NULL::integer,
par_originating_server varchar = NULL::character varying,
out returncode integer
```

O procedimento `aws_sqlserver_ext.sp_attach_schedule` no pacote de extensão emula o procedimento `msdb.dbo.sp_attach_schedule`. Para obter mais informações sobre o procedimento do SQL Server Agent de origem, consulte a [documentação técnica da Microsoft](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-attach-schedule-transact-sql?view=sql-server-ver15). 

```
par_job_id integer = NULL::integer,
par_job_name varchar = NULL::character varying,
par_schedule_id integer = NULL::integer,
par_schedule_name varchar = NULL::character varying,
par_automatic_post smallint = 1,
out returncode integer
```

O procedimento `aws_sqlserver_ext.sp_add_jobschedule` no pacote de extensão emula o procedimento `msdb.dbo.sp_add_jobschedule`. Para obter mais informações sobre o procedimento do SQL Server Agent de origem, consulte a [documentação técnica da Microsoft](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-add-jobschedule-transact-sql?view=sql-server-ver15). 

```
par_job_id integer = NULL::integer,
par_job_name varchar = NULL::character varying,
par_name varchar = NULL::character varying,
par_enabled smallint = 1,
par_freq_type integer = 1,
par_freq_interval integer = 0,
par_freq_subday_type integer = 0,
par_freq_subday_interval integer = 0,
par_freq_relative_interval integer = 0,
par_freq_recurrence_factor integer = 0,
par_active_start_date integer = NULL::integer,
par_active_end_date integer = 99991231,
par_active_start_time integer = 0,
par_active_end_time integer = 235959,
inout par_schedule_id integer = NULL::integer,
par_automatic_post smallint = 1,
inout par_schedule_uid char = NULL::bpchar,
out returncode integer
```

O procedimento `aws_sqlserver_ext.sp_delete_job` no pacote de extensão emula o procedimento `msdb.dbo.sp_delete_job`. Para obter mais informações sobre o procedimento do SQL Server Agent de origem, consulte a [documentação técnica da Microsoft](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-delete-job-transact-sql?view=sql-server-ver15). 

```
par_job_id integer = NULL::integer,
par_job_name varchar = NULL::character varying,
par_originating_server varchar = NULL::character varying,
par_delete_history smallint = 1,
par_delete_unused_schedule smallint = 1,
out returncode integer
```

O procedimento `aws_sqlserver_ext.sp_delete_jobstep` no pacote de extensão emula o procedimento `msdb.dbo.sp_delete_jobstep`. Para obter mais informações sobre o procedimento do SQL Server Agent de origem, consulte a [documentação técnica da Microsoft](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-delete-jobsteplog-transact-sql?view=sql-server-ver15). 

```
par_job_id integer = NULL::integer,
par_job_name varchar = NULL::character varying,
par_step_id integer = NULL::integer,
out returncode integer
```

O procedimento `aws_sqlserver_ext.sp_delete_jobschedule` no pacote de extensão emula o procedimento `msdb.dbo.sp_delete_jobschedule`. Para obter mais informações sobre o procedimento do SQL Server Agent de origem, consulte a [documentação técnica da Microsoft](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-delete-jobschedule-transact-sql?view=sql-server-ver15). 

```
par_job_id integer = NULL::integer,
par_job_name varchar = NULL::character varying,
par_name varchar = NULL::character varying,
par_keep_schedule integer = 0,
par_automatic_post smallint = 1,
out returncode integer
```

O procedimento `aws_sqlserver_ext.sp_delete_schedule` no pacote de extensão emula o procedimento `msdb.dbo.sp_delete_schedule`. Para obter mais informações sobre o procedimento do SQL Server Agent de origem, consulte a [documentação técnica da Microsoft](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-delete-schedule-transact-sql?view=sql-server-ver15). 

```
par_schedule_id integer = NULL::integer,
par_schedule_name varchar = NULL::character varying,
par_force_delete smallint = 0,
par_automatic_post smallint = 1,
out returncode integer
```

O procedimento `aws_sqlserver_ext.sp_detach_schedule` no pacote de extensão emula o procedimento `msdb.dbo.sp_detach_schedule`. Para obter mais informações sobre o procedimento do SQL Server Agent de origem, consulte a [documentação técnica da Microsoft](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-detach-schedule-transact-sql?view=sql-server-ver15). 

```
par_job_id integer = NULL::integer,
par_job_name varchar = NULL::character varying,
par_schedule_id integer = NULL::integer,
par_schedule_name varchar = NULL::character varying,
par_delete_unused_schedule smallint = 0,
par_automatic_post smallint = 1,
out returncode integer
```

O procedimento `aws_sqlserver_ext.sp_update_job` no pacote de extensão emula o procedimento `msdb.dbo.sp_update_job`. Para obter mais informações sobre o procedimento do SQL Server Agent de origem, consulte a [documentação técnica da Microsoft](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-update-job-transact-sql?view=sql-server-ver15). 

```
par_job_id integer = NULL::integer
par_job_name varchar = NULL::character varying
par_new_name varchar = NULL::character varying
par_enabled smallint = NULL::smallint
par_description varchar = NULL::character varying
par_start_step_id integer = NULL::integer
par_category_name varchar = NULL::character varying
par_owner_login_name varchar = NULL::character varying
par_notify_level_eventlog integer = NULL::integer
par_notify_level_email integer = NULL::integer
par_notify_level_netsend integer = NULL::integer
par_notify_level_page integer = NULL::integer
par_notify_email_operator_name varchar = NULL::character varying
par_notify_netsend_operator_name varchar = NULL::character varying
par_notify_page_operator_name varchar = NULL::character varying
par_delete_level integer = NULL::integer
par_automatic_post smallint = 1
out returncode integer
```

O procedimento `aws_sqlserver_ext.sp_update_jobschedule` no pacote de extensão emula o procedimento `msdb.dbo.sp_update_jobschedule`. Para obter mais informações sobre o procedimento do SQL Server Agent de origem, consulte a [documentação técnica da Microsoft](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-update-jobschedule-transact-sql?view=sql-server-ver15). 

```
par_job_id integer = NULL::integer
par_job_name varchar = NULL::character varying
par_name varchar = NULL::character varying
par_new_name varchar = NULL::character varying
par_enabled smallint = NULL::smallint
par_freq_type integer = NULL::integer
par_freq_interval integer = NULL::integer
par_freq_subday_type integer = NULL::integer
par_freq_subday_interval integer = NULL::integer
par_freq_relative_interval integer = NULL::integer
par_freq_recurrence_factor integer = NULL::integer
par_active_start_date integer = NULL::integer
par_active_end_date integer = NULL::integer
par_active_start_time integer = NULL::integer
                par_active_end_time integer = NULL::integer
par_automatic_post smallint = 1
out returncode integer
```

O procedimento `aws_sqlserver_ext.sp_update_jobstep` no pacote de extensão emula o procedimento `msdb.dbo.sp_update_jobstep`. Para obter mais informações sobre o procedimento do SQL Server Agent de origem, consulte a [documentação técnica da Microsoft](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-update-jobstep-transact-sql?view=sql-server-ver15). 

```
par_job_id integer = NULL::integer
par_job_name varchar = NULL::character varying
par_step_id integer = NULL::integer
par_step_name varchar = NULL::character varying
par_subsystem varchar = NULL::character varying
par_command text = NULL::text
par_additional_parameters text = NULL::text
par_cmdexec_success_code integer = NULL::integer
par_on_success_action smallint = NULL::smallint
par_on_success_step_id integer = NULL::integer
par_on_fail_action smallint = NULL::smallint
par_on_fail_step_id integer = NULL::integer
par_server varchar = NULL::character varying
par_database_name varchar = NULL::character varying
par_database_user_name varchar = NULL::character varying
par_retry_attempts integer = NULL::integer
par_retry_interval integer = NULL::integer
par_os_run_priority integer = NULL::integer
par_output_file_name varchar = NULL::character varying
par_flags integer = NULL::integer
par_proxy_id integer = NULL::integer
par_proxy_name varchar = NULL::character varying
out returncode integer
```

O procedimento `aws_sqlserver_ext.sp_update_schedule` no pacote de extensão emula o procedimento `msdb.dbo.sp_update_schedule`. Para obter mais informações sobre o procedimento do SQL Server Agent de origem, consulte a [documentação técnica da Microsoft](https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-update-schedule-transact-sql?view=sql-server-ver15). 

```
par_schedule_id integer = NULL::integer
par_name varchar = NULL::character varying
par_new_name varchar = NULL::character varying
par_enabled smallint = NULL::smallint
par_freq_type integer = NULL::integer
par_freq_interval integer = NULL::integer
par_freq_subday_type integer = NULL::integer
par_freq_subday_interval integer = NULL::integer
par_freq_relative_interval integer = NULL::integer
par_freq_recurrence_factor integer = NULL::integer
par_active_start_date integer = NULL::integer
par_active_end_date integer = NULL::integer
par_active_start_time integer = NULL::integer
par_active_end_time integer = NULL::integer
par_owner_login_name varchar = NULL::character varying
par_automatic_post smallint = 1
out returncode integer
```

## Exemplos de uso de procedimentos que emulam o SQL Server Agent no PostgreSQL
<a name="CHAP_Source.SQLServer.ToPostgreSQL.ExtensionPack.Agent.Examples"></a>

Para adicionar um novo trabalho, use o procedimento `aws_sqlserver_ext.sp_add_job` conforme mostrado a seguir.

```
SELECT * FROM aws_sqlserver_ext.sp_add_job (
    par_job_name := 'test_job',
    par_enabled := 1::smallint,
    par_start_step_id := 1::integer,
    par_category_name := '[Uncategorized (Local)]',
    par_owner_login_name := 'sa');
```

Para adicionar uma nova etapa do trabalho, use o procedimento `aws_sqlserver_ext.sp_add_jobstep` conforme mostrado a seguir.

```
SELECT * FROM aws_sqlserver_ext.sp_add_jobstep (
    par_job_name := 'test_job',
    par_step_id := 1::smallint,
    par_step_name := 'test_job_step1',
    par_subsystem := 'TSQL',
    par_command := 'EXECUTE [dbo].[PROC_TEST_JOB_STEP1];',
    par_server := NULL,
    par_database_name := 'GOLD_TEST_SS');
```

Para adicionar um cronograma simples, use o procedimento `aws_sqlserver_ext.sp_add_schedule` conforme mostrado a seguir.

```
SELECT * FROM aws_sqlserver_ext.sp_add_schedule(
    par_schedule_name := 'RunOnce',
    par_freq_type := 1,
    par_active_start_time := 233000);
```

Para definir um cronograma para um trabalho, use o procedimento `aws_sqlserver_ext.sp_attach_schedule` conforme mostrado a seguir.

```
SELECT * FROM aws_sqlserver_ext.sp_attach_schedule (
    par_job_name := 'test_job',
    par_schedule_name := 'NightlyJobs');
```

Para criar um cronograma para um trabalho, use o procedimento `aws_sqlserver_ext.sp_add_jobschedule` conforme mostrado a seguir.

```
SELECT * FROM aws_sqlserver_ext.sp_add_jobschedule (
    par_job_name := 'test_job2',
    par_name := 'test_schedule2',
    par_enabled := 1::smallint,
    par_freq_type := 4,
    par_freq_interval := 1,
    par_freq_subday_type := 4,
    par_freq_subday_interval := 1,
    par_freq_relative_interval := 0,
    par_freq_recurrence_factor := 0,
    par_active_start_date := 20100801,
    par_active_end_date := 99991231,
    par_active_start_time := 0,
    par_active_end_time := 0);
```

## Use exemplos de casos para emular o SQL Server Agent no PostgreSQL
<a name="CHAP_Source.SQLServer.ToPostgreSQL.ExtensionPack.Agent.UseCases"></a>

Se o código-fonte do banco de dados usa o SQL Server Agent para executar trabalhos, você pode usar o pacote de extensão SQL Server para PostgreSQL AWS SCT para converter esse código em PostgreSQL. O pacote de extensão usa AWS Lambda funções para emular o comportamento do SQL Server Agent.

Você pode criar uma nova AWS Lambda função ou registrar uma função existente.

**Para criar uma nova AWS Lambda função**

1. Em AWS SCT, na árvore do banco de dados de destino, abra o menu de contexto (clique com o botão direito do mouse), escolha **Aplicar pacote de extensão para** e, em seguida, escolha **PostgreSQL**. 

   O assistente do pacote de extensões é exibido. 

1. Na guia **Serviço de emulação do SQL Server Agent**, faça o seguinte: 
   + Escolha **Criar uma AWS Lambda função**.
   + Em **Login do banco de dados**, insira o nome do usuário do banco de dados de destino.
   + Em **Senha do banco de dados**, insira a senha do nome de usuário que você inseriu na etapa anterior.
   + Para a **pasta da biblioteca Python**, insira o caminho para a pasta da biblioteca Python.
   + Escolha **Criar AWS Lambda função** e, em seguida, escolha **Avançar**.

**Para registrar uma AWS Lambda função que você implantou anteriormente**
+ Execute o script a seguir no banco de dados de destino.

  ```
  SELECT
      FROM aws_sqlserver_ext.set_service_setting(
          p_service := 'JOB', 
          p_setting := 'LAMBDA_ARN', 
          p_value := ARN)
  ```

  No exemplo anterior, *`ARN`* é o nome do recurso da Amazon (ARN) da função AWS Lambda implantada.

O exemplo a seguir cria uma tarefa simples que consiste em uma etapa. A cada cinco minutos, essa tarefa executa a função `job_example` criada anteriormente. Essa função insere registros na tabela `job_example_table`.

**Para criar essa tarefa simples**

1. Crie um trabalho usando a função `aws_sqlserver_ext.sp_add_job`, conforme mostrado a seguir.

   ```
   SELECT
       FROM aws_sqlserver_ext.sp_add_job (
           par_job_name := 'test_simple_job');
   ```

1. Crie uma etapa de trabalho usando a função `aws_sqlserver_ext.sp_add_jobstep`, conforme mostrado a seguir.

   ```
   SELECT
       FROM aws_sqlserver_ext.sp_add_jobstep (
           par_job_name := 'test_simple_job', 
           par_step_name := 'test_simple_job_step1', 
           par_command := 'PERFORM job_simple_example;');
   ```

   A etapa do trabalho especifica o que a função faz.

1. Crie um programador para o trabalho usando a função `aws_sqlserver_ext.sp_add_jobschedule`, conforme mostrado a seguir.

   ```
   SELECT
       FROM aws_sqlserver_ext.sp_add_jobschedule (
           par_job_name := 'test_simple_job', 
           par_name := 'test_schedule', 
           par_freq_type := 4, /* Daily */
           par_freq_interval := 1, /* frequency_interval is unused */
           par_freq_subday_type := 4, /* Minutes */
           par_freq_subday_interval := 5 /* 5 minutes */);
   ```

   A etapa do trabalho especifica o que a função faz.

Para excluir esse trabalho, use a função `aws_sqlserver_ext.sp_delete_job` conforme mostrado a seguir.

```
PERFORM aws_sqlserver_ext.sp_delete_job(
    par_job_name := 'PeriodicJob1'::character varying,
    par_delete_history := 1::smallint,
    par_delete_unused_schedule := 1::smallint);
```