Utilizzo di un pacchetto di AWS SCT estensione per emulare Server Agent in Postgre SQL SQL - AWS Schema Conversion Tool

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di un pacchetto di AWS SCT estensione per emulare Server Agent in Postgre SQL SQL

SQLServer Agent è un servizio di Microsoft Windows che esegue i job SQL Server. SQLServer Agent esegue i job in base a una pianificazione, in risposta a un evento specifico o su richiesta. Per ulteriori informazioni su SQL Server Agent, vedere la documentazione tecnica Microsoft.

Postgre SQL non ha un equivalente per SQL Server Agent. Per emulare le funzionalità di SQL Server Agent, AWS SCT crea un pacchetto di estensione. Questo pacchetto di estensione utilizza AWS Lambda Amazon CloudWatch. AWS Lambda implementa l'interfaccia utilizzata per gestire le pianificazioni ed eseguire i lavori. Amazon CloudWatch mantiene le regole di pianificazione.

AWS Lambda e Amazon CloudWatch utilizzano un JSON parametro per interagire. Questo JSON parametro ha la seguente struttura.

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

Nell'esempio precedente, mode è il tipo di attività ed list of parameters è un insieme di parametri che dipendono dal tipo di attività. Inoltre, procedure name è il nome della procedura che viene eseguita dopo il completamento dell'attività.

AWS SCT utilizza una funzione Lambda per controllare ed eseguire i job. La CloudWatch regola avvia l'esecuzione del processo e fornisce le informazioni necessarie per avviarlo. Quando la CloudWatch regola viene attivata, avvia la funzione Lambda utilizzando i parametri della regola.

Per creare un processo semplice che richiama una procedura, utilizzate il seguente formato.

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

Per creare un lavoro con diversi passaggi, utilizzate il formato seguente.

{ "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 }, ... ] }

Per emulare il comportamento del SQL Server Agent in PostgreSQL, il pacchetto di AWS SCT estensione crea anche le seguenti tabelle e procedure.

Tabelle che emulano Server Agent SQL in Postgre SQL

Per emulare SQL Server Agent, il pacchetto di estensione utilizza le seguenti tabelle:

sysjobs

Memorizza le informazioni sui lavori.

sysjobsteps

Memorizza le informazioni sulle fasi di un lavoro.

pianificazioni di sistema

Memorizza le informazioni sulle pianificazioni dei lavori.

sysjobschedules

Memorizza le informazioni sulla pianificazione per i singoli lavori.

sysjobhistory

Memorizza le informazioni sulle esecuzioni dei lavori pianificati.

Procedure che emulano SQL Server Agent in Postgre SQL

Per emulare SQL Server Agent, il pacchetto di estensione utilizza le seguenti procedure:

sp_add_job

Aggiunge un nuovo lavoro.

sp_add_jobstep

Aggiunge un passaggio a un lavoro.

sp_add_schedule

Crea una nuova regola di pianificazione in Amazon CloudWatch. Puoi utilizzare questa pianificazione con un numero qualsiasi di lavori.

sp_attach_schedule

Imposta una pianificazione per il lavoro selezionato.

sp_add_jobschedule

Crea una regola di pianificazione per un lavoro in Amazon CloudWatch e imposta l'obiettivo per questa regola.

sp_update_job

Aggiorna gli attributi del lavoro creato in precedenza.

sp_update_jobstep

Aggiorna gli attributi della fase di un lavoro.

sp_update_schedule

Aggiorna gli attributi di una regola di pianificazione in Amazon CloudWatch.

sp_update_jobschedule

Aggiorna gli attributi della pianificazione per il lavoro specificato.

sp_delete_job

Elimina un lavoro.

sp_delete_jobstep

Elimina una fase di lavoro da un lavoro.

sp_delete_schedule

Elimina una pianificazione.

sp_delete_jobschedule

Elimina la regola di pianificazione per il lavoro specificato da Amazon CloudWatch.

sp_detach_schedule

Rimuove un'associazione tra una pianificazione e un lavoro.

get_jobs, update_job

Procedure interne che interagiscono con. AWS Elastic Beanstalk

sp_verify_job_date, sp_verify_job_time, sp_verify_job, sp_verify_jobstep, sp_verify_schedule, sp_verify_job_identifiers, sp_verify_schedule_identifiers, sp_verify_schedule_identifiers

Procedure interne che controllano le impostazioni.

Sintassi per le procedure che emulano SQL Server Agent in Postgre SQL

La aws_sqlserver_ext.sp_add_job procedura nel pacchetto di estensione emula la procedura. msdb.dbo.sp_add_job Per ulteriori informazioni sulla procedura di origine del SQL Server Agent, vedere la documentazione tecnica Microsoft.

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

La aws_sqlserver_ext.sp_add_jobstep procedura nel pacchetto di estensione emula la msdb.dbo.sp_add_jobstep procedura. Per ulteriori informazioni sulla procedura di origine del SQL Server Agent, vedere la documentazione tecnica Microsoft.

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

La aws_sqlserver_ext.sp_add_schedule procedura nel pacchetto di estensione emula la msdb.dbo.sp_add_schedule procedura. Per ulteriori informazioni sulla procedura di origine del SQL Server Agent, vedere la documentazione tecnica Microsoft.

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

La aws_sqlserver_ext.sp_attach_schedule procedura nel pacchetto di estensione emula la msdb.dbo.sp_attach_schedule procedura. Per ulteriori informazioni sulla procedura di origine del SQL Server Agent, vedere la documentazione tecnica Microsoft.

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

La aws_sqlserver_ext.sp_add_jobschedule procedura nel pacchetto di estensione emula la msdb.dbo.sp_add_jobschedule procedura. Per ulteriori informazioni sulla procedura di origine del SQL Server Agent, vedere la documentazione tecnica Microsoft.

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

La aws_sqlserver_ext.sp_delete_job procedura nel pacchetto di estensione emula la msdb.dbo.sp_delete_job procedura. Per ulteriori informazioni sulla procedura di origine del SQL Server Agent, vedere la documentazione tecnica Microsoft.

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

La aws_sqlserver_ext.sp_delete_jobstep procedura nel pacchetto di estensione emula la msdb.dbo.sp_delete_jobstep procedura. Per ulteriori informazioni sulla procedura di origine del SQL Server Agent, vedere la documentazione tecnica Microsoft.

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

La aws_sqlserver_ext.sp_delete_jobschedule procedura nel pacchetto di estensione emula la msdb.dbo.sp_delete_jobschedule procedura. Per ulteriori informazioni sulla procedura di origine del SQL Server Agent, vedere la documentazione tecnica Microsoft.

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

La aws_sqlserver_ext.sp_delete_schedule procedura nel pacchetto di estensione emula la msdb.dbo.sp_delete_schedule procedura. Per ulteriori informazioni sulla procedura di origine del SQL Server Agent, vedere la documentazione tecnica Microsoft.

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

La aws_sqlserver_ext.sp_detach_schedule procedura nel pacchetto di estensione emula la msdb.dbo.sp_detach_schedule procedura. Per ulteriori informazioni sulla procedura di origine del SQL Server Agent, vedere la documentazione tecnica Microsoft.

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

La aws_sqlserver_ext.sp_update_job procedura nel pacchetto di estensione emula la msdb.dbo.sp_update_job procedura. Per ulteriori informazioni sulla procedura di origine del SQL Server Agent, vedere la documentazione tecnica Microsoft.

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

La aws_sqlserver_ext.sp_update_jobschedule procedura nel pacchetto di estensione emula la msdb.dbo.sp_update_jobschedule procedura. Per ulteriori informazioni sulla procedura di origine del SQL Server Agent, vedere la documentazione tecnica Microsoft.

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

La aws_sqlserver_ext.sp_update_jobstep procedura nel pacchetto di estensione emula la msdb.dbo.sp_update_jobstep procedura. Per ulteriori informazioni sulla procedura di origine del SQL Server Agent, vedere la documentazione tecnica Microsoft.

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

La aws_sqlserver_ext.sp_update_schedule procedura nel pacchetto di estensione emula la msdb.dbo.sp_update_schedule procedura. Per ulteriori informazioni sulla procedura di origine del SQL Server Agent, vedere la documentazione tecnica Microsoft.

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

Esempi di utilizzo di procedure che emulano SQL Server Agent in Postgre SQL

Per aggiungere un nuovo lavoro, utilizzare la aws_sqlserver_ext.sp_add_job procedura illustrata di seguito.

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');

Per aggiungere una nuova fase del processo, utilizzare la aws_sqlserver_ext.sp_add_jobstep procedura illustrata di seguito.

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');

Per aggiungere una pianificazione semplice, utilizzare la aws_sqlserver_ext.sp_add_schedule procedura illustrata di seguito.

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

Per impostare una pianificazione per un lavoro, utilizzare la aws_sqlserver_ext.sp_attach_schedule procedura illustrata di seguito.

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

Per creare una pianificazione per un lavoro, utilizzare la aws_sqlserver_ext.sp_add_jobschedule procedura illustrata di seguito.

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);

Esempi di casi d'uso per emulare SQL Server Agent in Postgre SQL

Se il codice del database sorgente utilizza SQL Server Agent per eseguire i job, puoi usare il pacchetto di SQL estensione SQL Server to Postgre per AWS SCT convertire questo codice in Postgre. SQL Il pacchetto di estensione utilizza AWS Lambda funzioni per emulare il comportamento di Server Agent. SQL

È possibile creare una nuova AWS Lambda funzione o registrare una funzione esistente.

Per creare una nuova AWS Lambda funzione
  1. Nella struttura del database di destinazione AWS SCT, apri il menu contestuale (fai clic con il pulsante destro del mouse), scegli Applica pacchetto di estensione per, quindi scegli SQLPostgre.

    Viene visualizzata la procedura guidata del pacchetto di estensione.

  2. Nella scheda Servizio di emulazione SQL Server Agent, procedi come segue:

    • Scegli Crea una AWS Lambda funzione.

    • Per l'accesso al database, inserisci il nome dell'utente del database di destinazione.

    • Per Password del database, inserisci la password per il nome utente che hai inserito nel passaggio precedente.

    • Per la cartella della libreria Python, inserisci il percorso della cartella della libreria Python.

    • Scegli Crea AWS Lambda funzione, quindi scegli Avanti.

Per registrare una AWS Lambda funzione che hai distribuito in precedenza
  • Esegui lo script seguente sul database di destinazione.

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

    Nell'esempio precedente, ARN è l'Amazon Resource Name (ARN) della AWS Lambda funzione distribuita.

L'esempio seguente crea un'attività semplice che consiste in un solo passaggio. Ogni cinque minuti, questa attività esegue la job_example funzione creata in precedenza. Questa funzione inserisce i record nella job_example_table tabella.

Per creare questa semplice operazione
  1. Crea un lavoro utilizzando la aws_sqlserver_ext.sp_add_job funzione come illustrato di seguito.

    SELECT FROM aws_sqlserver_ext.sp_add_job ( par_job_name := 'test_simple_job');
  2. Create una fase di lavoro utilizzando la aws_sqlserver_ext.sp_add_jobstep funzione come illustrato di seguito.

    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;');

    La fase di lavoro specifica cosa fa la funzione.

  3. Crea uno scheduler per il lavoro utilizzando la aws_sqlserver_ext.sp_add_jobschedule funzione come illustrato di seguito.

    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 */);

    La fase del processo specifica cosa fa la funzione.

Per eliminare questo lavoro, utilizzare la aws_sqlserver_ext.sp_delete_job funzione come illustrato di seguito.

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