Mit einemAWS SCTErweiterungspaket zur Emulation des SQL Server-Agents in PostgreSQL - 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.

Mit einemAWS SCTErweiterungspaket zur Emulation des SQL Server-Agents in PostgreSQL

Der SQL Server Agent ist ein Microsoft Windows-Dienst, der SQL Server-Jobs ausführt. Der SQL Server-Agent führt Jobs nach einem Zeitplan, als Reaktion auf ein bestimmtes Ereignis oder auf der Anforderung aus. Weitere Informationen über die SQL Server-Agent finden Sie unter.Technische Dokumentation von Microsoft.

PostgreSQL hat keine -Prozedur für die SQL Server-Agentin. Um die Funktionen des SQL Server-Agents zu emulieren,AWS SCTerstellt ein Erweiterungspaket. Dieses Erweiterungspaket verwendetAWS Lambdaund Amazon CloudWatch.AWS Lambdaimplementiert die Schnittstelle, mit der Sie Zeitpläne verwalten und Jobs ausführen. Amazon CloudWatch behält die Zeitplanregeln bei.

AWS Lambdaund Amazon CloudWatch Verwenden Sie einen JSON-Parameter, um zu interagieren. Dieser JSON-Parameter hat die -Prozedur.

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

Im vorherigen Beispielmodeist der Typ der Aufgabe undlist of parametersist eine -Prozedur, die von der -Prozedur abhängt. Außerdemprocedure nameist der Name der Prozedur, die nach Abschluss der Aufgabe ausgeführt wird.

AWS SCTverwendet eine Lambda-Funktion zur Steuerung und Ausführung von Jobs. Das CloudWatch Die Regel startet die Ausführung des Jobs und stellt die notwendigen Informationen bereit, um den Job zu starten. Wenn der CloudWatch Regel löst aus, sie startet die Lambda-Funktion unter Verwendung der Parameter 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" } }

Um einen Job mit mehreren -Schritten zu erstellen, verwenden Sie die -Prozedur.

{ "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 PostgreSQL zu emulieren,AWS SCTDas Erweiterungspaket erstellt auch die folgenden Tabellen und Prozeduren.

Tabellen, die den SQL Server-Agent in PostgreSQL emulieren

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

sysjobs

Speichert die Informationen über die -Prozedur.

sysjobsteps

Speichert die Informationen über die -Prozedur.

Sysschedules

Speichert die Informationen über die -Prozedur.

sysjobschedules

Speichert die Zeitplaninformationen für einzelne Jobs.

sysjobhistory

Speichert die -Prozedur.

Verfahren, die den SQL Server-Agent in PostgreSQL emulieren

Um den SQL Server-Agent 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 -Prozedur für die -Prozedur.

sp_delete_job

Löscht einen Job aus.

sp_delete_jobstep

Löscht einen Job-Schritt aus einem Job.

sp_delete_schedule

Löscht einen Zeitplan.

sp_delete_jobschedule

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

sp_detach_schedule

Löscht eine Verbindung zwischen einem Zeitplan und einem Job.

get_jobs, update_job

Interne Verfahren, die interagieren mitAWS 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 zur Überprüfung der Einstellungen.

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

Dasaws_sqlserver_ext.sp_add_jobDas Verfahren im Erweiterungspaket emuliert dasmsdb.dbo.sp_add_jobVerfahren. Weitere Informationen über die SQL Server-Agent-Prozedur finden Sie unter.Technische 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

Dasaws_sqlserver_ext.sp_add_jobstepDas Verfahren im Erweiterungspaket emuliert dasmsdb.dbo.sp_add_jobstepVerfahren. Weitere Informationen über die SQL Server-Agent-Prozedur finden Sie unter.Technische 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

Dasaws_sqlserver_ext.sp_add_scheduleDas Verfahren im Erweiterungspaket emuliert dasmsdb.dbo.sp_add_scheduleVerfahren. Weitere Hinweise zur SQL Server-Agent-Quellprozedur finden Sie unterTechnische 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

Dasaws_sqlserver_ext.sp_attach_scheduleDas Verfahren im Erweiterungspaket emuliert dasmsdb.dbo.sp_attach_scheduleVerfahren. Weitere Hinweise zur SQL Server-Agent-Quellprozedur finden Sie unterTechnische 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

Dasaws_sqlserver_ext.sp_add_jobscheduleDas Verfahren im Erweiterungspaket emuliert dasmsdb.dbo.sp_add_jobscheduleVerfahren. Weitere Hinweise zur SQL Server-Agent-Quellprozedur finden Sie unterTechnische 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

Dasaws_sqlserver_ext.sp_delete_jobDas Verfahren im Erweiterungspaket emuliert dasmsdb.dbo.sp_delete_jobVerfahren. Weitere Hinweise zur SQL Server-Agent-Quellprozedur finden Sie unterTechnische 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

Dasaws_sqlserver_ext.sp_delete_jobstepDas Verfahren im Erweiterungspaket emuliert dasmsdb.dbo.sp_delete_jobstepVerfahren. Weitere Hinweise zur SQL Server-Agent-Quellprozedur finden Sie unterTechnische 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

Dasaws_sqlserver_ext.sp_delete_jobscheduleDas Verfahren im Erweiterungspaket emuliert dasmsdb.dbo.sp_delete_jobscheduleVerfahren. Weitere Hinweise zur SQL Server-Agent-Quellprozedur finden Sie unterTechnische 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

Dasaws_sqlserver_ext.sp_delete_scheduleDas Verfahren im Erweiterungspaket emuliert dasmsdb.dbo.sp_delete_scheduleVerfahren. Weitere Hinweise zur SQL Server-Agent-Quellprozedur finden Sie unterTechnische 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

Dasaws_sqlserver_ext.sp_detach_scheduleDas Verfahren im Erweiterungspaket emuliert dasmsdb.dbo.sp_detach_scheduleVerfahren. Weitere Hinweise zur SQL Server-Agent-Quellprozedur finden Sie unterTechnische 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

Dasaws_sqlserver_ext.sp_update_jobDas Verfahren im Erweiterungspaket emuliert dasmsdb.dbo.sp_update_jobVerfahren. Weitere Hinweise zur SQL Server-Agent-Quellprozedur finden Sie unterTechnische 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

Dasaws_sqlserver_ext.sp_update_jobscheduleDas Verfahren im Erweiterungspaket emuliert dasmsdb.dbo.sp_update_jobscheduleVerfahren. Weitere Hinweise zur SQL Server-Agent-Quellprozedur finden Sie unterTechnische 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

Dasaws_sqlserver_ext.sp_update_jobstepDas Verfahren im Erweiterungspaket emuliert dasmsdb.dbo.sp_update_jobstepVerfahren. Weitere Hinweise zur SQL Server-Agent-Quellprozedur finden Sie unterTechnische 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

Dasaws_sqlserver_ext.sp_update_scheduleDas Verfahren im Erweiterungspaket emuliert dasmsdb.dbo.sp_update_scheduleVerfahren. Weitere Hinweise zur SQL Server-Agent-Quellprozedur finden Sie unterTechnische 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 Prozeduren, die den SQL Server-Agent in PostgreSQL emulieren

Um einen neuen Job hinzuzufügen, verwenden Sie dieaws_sqlserver_ext.sp_add_jobVerfahren wie im Folgenden gezeigt.

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

Um einen neuen Job-Schritt hinzuzufügen, verwenden Sieaws_sqlserver_ext.sp_add_jobstepVerfahren wie im Folgenden gezeigt.

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

Um einen einfachen Zeitplan hinzuzufügen, verwenden Sie denaws_sqlserver_ext.sp_add_scheduleVerfahren wie im Folgenden gezeigt.

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

Um einen Zeitplan für einen Job festzulegen, verwenden Sie denaws_sqlserver_ext.sp_attach_scheduleVerfahren wie im Folgenden gezeigt.

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

Um einen Zeitplan für einen Job zu erstellen, verwenden Sie denaws_sqlserver_ext.sp_add_jobscheduleVerfahren wie im Folgenden gezeigt.

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 PostgreSQL

Wenn Ihr Quelldatenbankcode den SQL Server-Agent zum Ausführen von Aufträgen verwendet, können Sie das Erweiterungspaket SQL Server to PostgreSQL für verwendenAWS SCTum diesen Code in PostgreSQL zu konvertieren. Das Erweiterungspaket verwendetAWS LambdaFunktionen zur Emulierung des Verhaltens des SQL Server-Agents.

Sie können ein neues erstellenAWS LambdaFunktion oder registriere eine bestehende Funktion.

So erstellen Sie eine neue AWS Lambda-Funktion
  1. InAWS SCT, öffnen Sie im Zieldatenbank-Baum das Kontextmenü (Rechtsklick), wählen SieAnwenden Sie das Erweiterungspaket fürund dannPostgreSQL.

    Der Assistent des Erweiterungspakets wird angezeigt.

  2. Auf derSQL Server-Agent-Emulationsdienst.Zeigen Sie die Registerkarte an, und gehen Sie wie folgt vor:

    • WähleErstelle einAWS Lambdawirken.

    • FürDatenbank-Login, geben Sie die -Prozedur ein.

    • FürDatenbank-Passwort, geben Sie das Passwort für den Benutzernamen ein, den Sie im vorherigen Schritt eingegeben haben.

    • FürOrdner der Python-Bibliothek, geben Sie den Pfad zu Ihrem Python-Bibliotheksordner ein.

    • Wählen SieErstellenAWS Lambdawirken, und wählen Sie dannAls Nächstes.

Um einAWS LambdaFunktion, die Sie zuvor bereitgestellt haben
  • Führen Sie die -Prozedur in der -Datenbank aus.

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

    Im vorherigen BeispielARNist die Amazon Resource Name (ARN) der -Prozedur.AWS LambdaFunktion.

Das folgende Beispiel erstellt eine einfache Aufgabe, die aus einem Schritt besteht. Diese Aufgabe führt alle fünf Minuten die zuvor erstellte Aufgabe ausjob_exampleFunktion. Diese Funktion fügt Datensätze in diejob_example_tableTabelle.

Um diese einfache Aufgabe zu erstellen
  1. Erstellen Sie einen Job aus demaws_sqlserver_ext.sp_add_jobfunktionieren wie folgt.

    SELECT FROM aws_sqlserver_ext.sp_add_job ( par_job_name := 'test_simple_job');
  2. Erstellen Sie einen Job-Schritt ausaws_sqlserver_ext.sp_add_jobstepfunktionieren wie folgt.

    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 spezifiziert, was die Funktion macht.

  3. Erstellen Sie einen Scheduler für den Job mit demaws_sqlserver_ext.sp_add_jobschedulefunktionieren wie folgt.

    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 spezifiziert, was die Funktion macht.

Um diesen Job zu löschen, verwenden Sie denaws_sqlserver_ext.sp_delete_jobfunktionieren 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);