Verwendung eines AWS SCT Erweiterungspakets zur Emulation des SQL Server-Agents in Postgre SQL - AWS Schema Conversion Tool

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwendung eines AWS SCT Erweiterungspakets zur Emulation des SQL Server-Agents in Postgre SQL

SQLServer Agent ist ein Microsoft Windows-Dienst, der SQL Serverjobs ausführt. SQLDer Server-Agent führt Jobs nach einem Zeitplan, als Reaktion auf ein bestimmtes Ereignis oder bei Bedarf aus. Weitere Informationen zum SQL Server-Agent finden Sie in der technischen Dokumentation von Microsoft.

Postgre SQL hat kein Äquivalent für SQL Server Agent. AWS SCT Erstellt ein Erweiterungspaket, um die Funktionen des SQL Server-Agents zu emulieren. Dieses Erweiterungspaket verwendet AWS Lambda Amazon CloudWatch. AWS Lambda implementiert die Schnittstelle, die Sie zum Verwalten von Zeitplänen und zum Ausführen von Jobs verwenden. Amazon CloudWatch hält die Zeitplanregeln ein.

AWS Lambda und Amazon CloudWatch verwendet einen JSON Parameter, um zu interagieren. Dieser JSON Parameter hat die folgende Struktur.

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

Im vorherigen Beispiel mode ist der Typ der Aufgabe und list of parameters besteht aus einer Reihe von Parametern, die vom Typ der Aufgabe abhängen. Dies procedure name ist auch der Name der Prozedur, die nach Abschluss der Aufgabe ausgeführt wird.

AWS SCT verwendet eine Lambda-Funktion zur Steuerung und Ausführung von Jobs. Die CloudWatch Regel startet die Ausführung des Jobs und stellt die erforderlichen Informationen zum Starten des Jobs bereit. Wenn die CloudWatch Regel ausgelöst wird, startet sie die Lambda-Funktion mit den Parametern aus der Regel.

Verwenden Sie das folgende Format, um einen einfachen Job zu erstellen, der eine Prozedur aufruft.

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

Verwenden Sie das folgende Format, um einen Job mit mehreren Schritten zu erstellen.

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

Um das Verhalten des SQL Server-Agents in Postgre zu emulierenSQL, erstellt das AWS SCT Erweiterungspaket auch die folgenden Tabellen und Verfahren.

Tabellen, die den SQL Server-Agenten in Postgre emulieren SQL

Um den SQL Server-Agenten zu emulieren, verwendet das Erweiterungspaket die folgenden Tabellen:

sysjobs

Speichert die Informationen über die Jobs.

sysjobsteps

Speichert die Informationen über die Schritte eines Jobs.

Sysschedules

Speichert die Informationen über die Jobpläne.

sysjobschedules

Speichert die Zeitplaninformationen für einzelne Jobs.

sysjobhistory

Speichert die Informationen über die Ausführung von geplanten Aufträgen.

Verfahren, die den SQL Server-Agent in Postgre emulieren SQL

Um den SQL Server-Agenten zu emulieren, verwendet das Erweiterungspaket die folgenden Verfahren:

sp_add_job

Fügt einen neuen Job hinzu.

sp_add_jobstep

Fügt einem Job einen Schritt hinzu.

sp_add_schedule

Erstellt eine neue Zeitplanregel in Amazon CloudWatch. Sie können diesen Zeitplan für eine beliebige Anzahl von Jobs verwenden.

sp_attach_schedule

Legt einen Zeitplan für den ausgewählten Job fest.

sp_add_jobschedule

Erstellt eine Zeitplanregel für einen Job in Amazon CloudWatch und legt das Ziel für diese Regel fest.

sp_update_job

Aktualisiert die Attribute des zuvor erstellten Jobs.

sp_update_jobstep

Aktualisiert die Attribute des Schritts in einem Job.

sp_update_schedule

Aktualisiert die Attribute einer Zeitplanregel in Amazon CloudWatch.

sp_update_jobschedule

Aktualisiert die Attribute des Zeitplans für den angegebenen Job.

sp_delete_job

Löscht einen Job.

sp_delete_jobstep

Löscht einen Auftragsschritt aus einem Job.

sp_delete_schedule

Löscht einen Zeitplan.

sp_delete_jobschedule

Löscht die Zeitplanregel für den angegebenen Job von Amazon CloudWatch.

sp_detach_schedule

Entfernt eine Verknüpfung zwischen einem Zeitplan und einem Job.

get_jobs, update_job

Interne Verfahren, die interagieren mit. 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

Interne Verfahren, die Einstellungen überprüfen.

Syntax für Prozeduren, die den SQL Server-Agent in Postgre emulieren SQL

Die aws_sqlserver_ext.sp_add_job Prozedur im Erweiterungspaket emuliert die Prozedur. msdb.dbo.sp_add_job Weitere Informationen zum SQL Quellserver-Agent-Verfahren finden Sie in der technischen Dokumentation von 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

Das aws_sqlserver_ext.sp_add_jobstep Verfahren im Erweiterungspaket emuliert das msdb.dbo.sp_add_jobstep Verfahren. Weitere Informationen zum SQL Quellserver-Agent-Verfahren finden Sie in der technischen Dokumentation von 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

Das aws_sqlserver_ext.sp_add_schedule Verfahren im Erweiterungspaket emuliert das msdb.dbo.sp_add_schedule Verfahren. Weitere Informationen zum SQL Quellserver-Agent-Verfahren finden Sie in der technischen Dokumentation von 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

Das aws_sqlserver_ext.sp_attach_schedule Verfahren im Erweiterungspaket emuliert das msdb.dbo.sp_attach_schedule Verfahren. Weitere Informationen zum SQL Quellserver-Agent-Verfahren finden Sie in der technischen Dokumentation von 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

Das aws_sqlserver_ext.sp_add_jobschedule Verfahren im Erweiterungspaket emuliert das msdb.dbo.sp_add_jobschedule Verfahren. Weitere Informationen zum SQL Quellserver-Agent-Verfahren finden Sie in der technischen Dokumentation von 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

Das aws_sqlserver_ext.sp_delete_job Verfahren im Erweiterungspaket emuliert das msdb.dbo.sp_delete_job Verfahren. Weitere Informationen zum SQL Quellserver-Agent-Verfahren finden Sie in der technischen Dokumentation von 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

Das aws_sqlserver_ext.sp_delete_jobstep Verfahren im Erweiterungspaket emuliert das msdb.dbo.sp_delete_jobstep Verfahren. Weitere Informationen zum SQL Quellserver-Agent-Verfahren finden Sie in der technischen Dokumentation von Microsoft.

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

Das aws_sqlserver_ext.sp_delete_jobschedule Verfahren im Erweiterungspaket emuliert das msdb.dbo.sp_delete_jobschedule Verfahren. Weitere Informationen zum SQL Quellserver-Agent-Verfahren finden Sie in der technischen Dokumentation von 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

Das aws_sqlserver_ext.sp_delete_schedule Verfahren im Erweiterungspaket emuliert das msdb.dbo.sp_delete_schedule Verfahren. Weitere Informationen zum SQL Quellserver-Agent-Verfahren finden Sie in der technischen Dokumentation von 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

Das aws_sqlserver_ext.sp_detach_schedule Verfahren im Erweiterungspaket emuliert das msdb.dbo.sp_detach_schedule Verfahren. Weitere Informationen zum SQL Quellserver-Agent-Verfahren finden Sie in der technischen Dokumentation von 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

Das aws_sqlserver_ext.sp_update_job Verfahren im Erweiterungspaket emuliert das msdb.dbo.sp_update_job Verfahren. Weitere Informationen zum SQL Quellserver-Agent-Verfahren finden Sie in der technischen Dokumentation von 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

Das aws_sqlserver_ext.sp_update_jobschedule Verfahren im Erweiterungspaket emuliert das msdb.dbo.sp_update_jobschedule Verfahren. Weitere Informationen zum SQL Quellserver-Agent-Verfahren finden Sie in der technischen Dokumentation von 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

Das aws_sqlserver_ext.sp_update_jobstep Verfahren im Erweiterungspaket emuliert das msdb.dbo.sp_update_jobstep Verfahren. Weitere Informationen zum SQL Quellserver-Agent-Verfahren finden Sie in der technischen Dokumentation von 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

Das aws_sqlserver_ext.sp_update_schedule Verfahren im Erweiterungspaket emuliert das msdb.dbo.sp_update_schedule Verfahren. Weitere Informationen zum SQL Quellserver-Agent-Verfahren finden Sie in der technischen Dokumentation von 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

Beispiele für die Verwendung von Verfahren, die den SQL Server-Agent emulieren, in Postgre SQL

Gehen Sie wie aws_sqlserver_ext.sp_add_job folgt vor, um einen neuen Job hinzuzufügen.

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

Gehen Sie wie aws_sqlserver_ext.sp_add_jobstep folgt vor, um einen neuen Auftragsschritt hinzuzufügen.

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

Gehen Sie wie aws_sqlserver_ext.sp_add_schedule folgt vor, um einen einfachen Zeitplan hinzuzufügen.

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

aws_sqlserver_ext.sp_attach_scheduleGehen Sie wie folgt vor, um einen Zeitplan für einen Job festzulegen.

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

aws_sqlserver_ext.sp_add_jobscheduleGehen Sie wie folgt vor, um einen Zeitplan für einen Job zu erstellen.

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

Anwendungsbeispiele für die Emulation des SQL Server-Agents in Postgre SQL

Wenn Ihr Quelldatenbankcode den SQL Server-Agent zum Ausführen von Jobs verwendet, können Sie das SQL SQL Server-to-Postgre-Erweiterungspaket verwenden, um diesen Code AWS SCT nach Postgre zu konvertieren. SQL Das Erweiterungspaket verwendet AWS Lambda Funktionen, um das Verhalten des Server-Agenten zu emulieren. SQL

Sie können eine neue AWS Lambda Funktion erstellen oder eine vorhandene Funktion registrieren.

Um eine neue AWS Lambda Funktion zu erstellen
  1. Öffnen Sie in der Zieldatenbankstruktur das Kontextmenü (Rechtsklick), wählen Sie Erweiterungspaket anwenden für und wählen Sie dann Postgre SQL aus. AWS SCT

    Der Assistent des Erweiterungspakets wird angezeigt.

  2. Gehen Sie auf der Registerkarte SQLServer-Agent-Emulationsdienst wie folgt vor:

    • Wählen Sie AWS Lambda Funktion erstellen aus.

    • Geben Sie für Datenbank-Login den Namen des Zieldatenbankbenutzers ein.

    • Geben Sie unter Datenbankkennwort das Passwort für den Benutzernamen ein, den Sie im vorherigen Schritt eingegeben haben.

    • Geben Sie für Python-Bibliotheksordner den Pfad zu Ihrem Python-Bibliotheksordner ein.

    • Wählen Sie AWS Lambda Funktion erstellen und dann Weiter.

Um eine AWS Lambda Funktion zu registrieren, die Sie zuvor bereitgestellt haben
  • Führen Sie das folgende Skript in Ihrer Zieldatenbank aus.

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

    Im vorherigen Beispiel ARN ist der Amazon-Ressourcenname (ARN) der bereitgestellten AWS Lambda Funktion.

Das folgende Beispiel erstellt eine einfache Aufgabe, die aus einem Schritt besteht. Alle fünf Minuten führt diese Aufgabe die zuvor erstellte job_example Funktion aus. Diese Funktion fügt Datensätze in die job_example_table Tabelle ein.

Um diese einfache Aufgabe zu erstellen
  1. Erstellen Sie einen Job mit der aws_sqlserver_ext.sp_add_job Funktion wie im Folgenden gezeigt.

    SELECT FROM aws_sqlserver_ext.sp_add_job ( par_job_name := 'test_simple_job');
  2. Erstellen Sie einen Auftragsschritt mithilfe der aws_sqlserver_ext.sp_add_jobstep Funktion, wie im Folgenden gezeigt.

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

    Der Job-Schritt gibt an, was die Funktion macht.

  3. Erstellen Sie mithilfe der aws_sqlserver_ext.sp_add_jobschedule Funktion einen Scheduler für den Job, wie im Folgenden gezeigt.

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

    Der Job-Schritt gibt an, was die Funktion macht.

Um diesen Job zu löschen, verwenden Sie die aws_sqlserver_ext.sp_delete_job Funktion wie folgt.

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