Utilisation d'un pack d' AWS SCT extension pour émuler l'agent de SQL serveur dans Postgre SQL - AWS Schema Conversion Tool

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation d'un pack d' AWS SCT extension pour émuler l'agent de SQL serveur dans Postgre SQL

SQLL'agent serveur est un service Microsoft Windows qui exécute des tâches de SQL serveur. SQLL'agent de serveur exécute les tâches selon un calendrier, en réponse à un événement spécifique ou à la demande. Pour plus d'informations sur SQL Server Agent, consultez la documentation technique Microsoft.

Postgre SQL n'a pas d'équivalent pour SQL Server Agent. Pour émuler les fonctionnalités de l'agent SQL serveur, AWS SCT créez un pack d'extension. Ce pack d'extension utilise AWS Lambda Amazon CloudWatch. AWS Lambda implémente l'interface que vous utilisez pour gérer les plannings et exécuter des tâches. Amazon CloudWatch applique les règles de planification.

AWS Lambda et Amazon CloudWatch utilisent un JSON paramètre pour interagir. La structure de ce JSON paramètre est la suivante.

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

Dans l'exemple précédent, mode est le type de tâche et list of parameters est un ensemble de paramètres qui dépendent du type de tâche. procedure nameC'est également le nom de la procédure qui s'exécute une fois la tâche terminée.

AWS SCT utilise une fonction Lambda pour contrôler et exécuter des tâches. La CloudWatch règle lance l'exécution de la tâche et fournit les informations nécessaires pour démarrer la tâche. Lorsque la CloudWatch règle se déclenche, elle lance la fonction Lambda en utilisant les paramètres de la règle.

Pour créer une tâche simple qui appelle une procédure, utilisez le format suivant.

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

Pour créer une tâche en plusieurs étapes, utilisez le format suivant.

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

Pour émuler le comportement de l'agent SQL serveur dans PostgreSQL, le pack d' AWS SCT extension crée également les tables et procédures suivantes.

Tables qui émulent l'agent SQL serveur dans Postgre SQL

Pour émuler l'agent de SQL serveur, le pack d'extension utilise les tableaux suivants :

sysjobs

Stocke les informations relatives aux tâches.

étapes du sysjob

Stocke les informations relatives aux étapes d'une tâche.

plannings du système

Stocke les informations relatives aux plannings de travail.

plannings de tâches sysjob

Stocke les informations de planification pour les tâches individuelles.

sysjobhistory

Stocke les informations relatives aux exécutions des tâches planifiées.

Procédures qui émulent l'agent SQL serveur dans Postgre SQL

Pour émuler l'agent SQL serveur, le pack d'extension utilise les procédures suivantes :

sp_add_job

Ajoute une nouvelle tâche.

sp_add_jobstep

Ajoute une étape à une tâche.

sp_add_schedule

Crée une nouvelle règle de planification dans Amazon CloudWatch. Vous pouvez utiliser ce calendrier avec autant de tâches que vous le souhaitez.

sp_attach_schedule

Définit un calendrier pour le travail sélectionné.

sp_add_jobschedule

Crée une règle de planification pour une tâche sur Amazon CloudWatch et définit l'objectif de cette règle.

sp_update_job

Met à jour les attributs de la tâche créée précédemment.

sp_update_jobstep

Met à jour les attributs de l'étape d'une tâche.

sp_update_schedule

Met à jour les attributs d'une règle de planification dans Amazon CloudWatch.

sp_update_jobschedule

Met à jour les attributs du planning pour la tâche spécifiée.

sp_delete_job

Supprime une tâche.

sp_delete_jobstep

Supprime une étape d'une tâche.

sp_delete_planning

Supprime un planning.

sp_delete_jobschedule

Supprime d'Amazon CloudWatch la règle de planification pour la tâche spécifiée.

sp_detach_schedule

Supprime une association entre un planning et une tâche.

get_jobs, update_job

Procédures internes qui interagissent avec 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

Procédures internes qui vérifient les paramètres.

Syntaxe des procédures qui émulent l'agent SQL serveur dans Postgre SQL

La aws_sqlserver_ext.sp_add_job procédure du pack d'extension émule la msdb.dbo.sp_add_job procédure. Pour plus d'informations sur la procédure de l'agent de SQL serveur source, consultez la documentation technique 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 procédure du pack d'extension émule la msdb.dbo.sp_add_jobstep procédure. Pour plus d'informations sur la procédure de l'agent de SQL serveur source, consultez la documentation technique 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 procédure du pack d'extension émule la msdb.dbo.sp_add_schedule procédure. Pour plus d'informations sur la procédure de l'agent de SQL serveur source, consultez la documentation technique 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 procédure du pack d'extension émule la msdb.dbo.sp_attach_schedule procédure. Pour plus d'informations sur la procédure de l'agent de SQL serveur source, consultez la documentation technique 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 procédure du pack d'extension émule la msdb.dbo.sp_add_jobschedule procédure. Pour plus d'informations sur la procédure de l'agent de SQL serveur source, consultez la documentation technique 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 procédure du pack d'extension émule la msdb.dbo.sp_delete_job procédure. Pour plus d'informations sur la procédure de l'agent de SQL serveur source, consultez la documentation technique 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 procédure du pack d'extension émule la msdb.dbo.sp_delete_jobstep procédure. Pour plus d'informations sur la procédure de l'agent de SQL serveur source, consultez la documentation technique 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 procédure du pack d'extension émule la msdb.dbo.sp_delete_jobschedule procédure. Pour plus d'informations sur la procédure de l'agent de SQL serveur source, consultez la documentation technique 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 procédure du pack d'extension émule la msdb.dbo.sp_delete_schedule procédure. Pour plus d'informations sur la procédure de l'agent de SQL serveur source, consultez la documentation technique 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 procédure du pack d'extension émule la msdb.dbo.sp_detach_schedule procédure. Pour plus d'informations sur la procédure de l'agent de SQL serveur source, consultez la documentation technique 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 procédure du pack d'extension émule la msdb.dbo.sp_update_job procédure. Pour plus d'informations sur la procédure de l'agent de SQL serveur source, consultez la documentation technique 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 procédure du pack d'extension émule la msdb.dbo.sp_update_jobschedule procédure. Pour plus d'informations sur la procédure de l'agent de SQL serveur source, consultez la documentation technique 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 procédure du pack d'extension émule la msdb.dbo.sp_update_jobstep procédure. Pour plus d'informations sur la procédure de l'agent de SQL serveur source, consultez la documentation technique 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 procédure du pack d'extension émule la msdb.dbo.sp_update_schedule procédure. Pour plus d'informations sur la procédure de l'agent de SQL serveur source, consultez la documentation technique 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

Exemples d'utilisation de procédures qui émulent l'agent de SQL serveur dans Postgre SQL

Pour ajouter une nouvelle tâche, suivez la aws_sqlserver_ext.sp_add_job procédure ci-dessous.

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

Pour ajouter une nouvelle étape de travail, suivez la aws_sqlserver_ext.sp_add_jobstep procédure décrite ci-dessous.

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

Pour ajouter un calendrier simple, suivez la aws_sqlserver_ext.sp_add_schedule procédure ci-dessous.

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

Pour définir un calendrier pour une tâche, suivez la aws_sqlserver_ext.sp_attach_schedule procédure décrite ci-dessous.

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

Pour créer un calendrier pour une tâche, suivez la aws_sqlserver_ext.sp_add_jobschedule procédure décrite ci-dessous.

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

Exemples de cas d'utilisation pour émuler l'agent de SQL serveur dans Postgre SQL

Si le code de votre base de données source utilise l'agent de SQL serveur pour exécuter des tâches, vous pouvez utiliser le pack d'SQLextension SQL Server AWS SCT to Postgre pour convertir ce code en SQL Postgre. Le pack d'extension utilise des AWS Lambda fonctions pour émuler le comportement de l'agent de SQL serveur.

Vous pouvez créer une nouvelle AWS Lambda fonction ou enregistrer une fonction existante.

Pour créer une nouvelle AWS Lambda fonction
  1. Dans AWS SCT l'arborescence de la base de données cible, ouvrez le menu contextuel (clic droit), choisissez Appliquer le pack d'extension pour, puis Postgre SQL.

    L'assistant Kit d'extension s'affiche.

  2. Dans l'onglet Service d'émulation de l'agent SQL serveur, procédez comme suit :

    • Choisissez Créer une AWS Lambda fonction.

    • Pour Connexion à la base de données, entrez le nom de l'utilisateur de la base de données cible.

    • Dans le champ Mot de passe de la base de données, entrez le mot de passe correspondant au nom d'utilisateur que vous avez saisi à l'étape précédente.

    • Pour le dossier de bibliothèque Python, entrez le chemin d'accès au dossier de votre bibliothèque Python.

    • Choisissez Créer AWS Lambda une fonction, puis Next.

Pour enregistrer une AWS Lambda fonction que vous avez déployée précédemment
  • Exécutez le script suivant sur votre base de données cible.

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

    Dans l'exemple précédent, ARN est le nom de ressource Amazon (ARN) de la AWS Lambda fonction déployée.

L'exemple suivant crée une tâche simple composée d'une étape. Toutes les cinq minutes, cette tâche exécute la job_example fonction créée précédemment. Cette fonction insère des enregistrements dans la job_example_table table.

Pour créer cette tâche simple
  1. Créez une tâche à l'aide de la aws_sqlserver_ext.sp_add_job fonction illustrée ci-dessous.

    SELECT FROM aws_sqlserver_ext.sp_add_job ( par_job_name := 'test_simple_job');
  2. Créez une étape de travail à l'aide de la aws_sqlserver_ext.sp_add_jobstep fonction illustrée ci-dessous.

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

    L'étape de travail indique le rôle de la fonction.

  3. Créez un planificateur pour le travail à l'aide de la aws_sqlserver_ext.sp_add_jobschedule fonction illustrée ci-dessous.

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

    L'étape de travail indique le rôle de la fonction.

Pour supprimer cette tâche, utilisez la aws_sqlserver_ext.sp_delete_job fonction illustrée ci-dessous.

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