Menggunakan paket AWS SCT ekstensi untuk meniru Agen SQL Server di Postgre SQL - AWS Schema Conversion Tool

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan paket AWS SCT ekstensi untuk meniru Agen SQL Server di Postgre SQL

SQLServer Agent adalah layanan Microsoft Windows yang menjalankan pekerjaan SQL Server. SQLAgen Server menjalankan pekerjaan sesuai jadwal, dalam menanggapi acara tertentu, atau sesuai permintaan. Untuk informasi selengkapnya tentang Agen SQL Server, lihat dokumentasi teknis Microsoft.

Postgre SQL tidak memiliki padanan untuk SQL Server Agent. Untuk meniru fitur Agen SQL Server, AWS SCT buat paket ekstensi. Paket ekstensi ini menggunakan AWS Lambda dan Amazon CloudWatch. AWS Lambda mengimplementasikan antarmuka yang Anda gunakan untuk mengelola jadwal dan menjalankan pekerjaan. Amazon CloudWatch mempertahankan aturan jadwal.

AWS Lambda dan Amazon CloudWatch menggunakan JSON parameter untuk berinteraksi. JSONParameter ini memiliki struktur sebagai berikut.

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

Dalam contoh sebelumnya, Mode adalah jenis tugas dan list of parameters merupakan seperangkat parameter yang bergantung pada jenis tugas. Juga, procedure name adalah nama prosedur yang berjalan setelah tugas selesai.

AWS SCT menggunakan satu fungsi Lambda untuk mengontrol dan menjalankan pekerjaan. CloudWatch Aturan memulai menjalankan pekerjaan dan memberikan informasi yang diperlukan untuk memulai pekerjaan. Ketika CloudWatch aturan dipicu, itu memulai fungsi Lambda menggunakan parameter dari aturan.

Untuk membuat pekerjaan sederhana yang memanggil prosedur, gunakan format berikut.

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

Untuk membuat pekerjaan dengan beberapa langkah, gunakan format berikut.

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

Untuk meniru perilaku Agen SQL Server di PostgreSQL, paket AWS SCT ekstensi juga membuat tabel dan prosedur berikut.

Tabel yang meniru Agen SQL Server di Postgre SQL

Untuk meniru Agen SQL Server, paket ekstensi menggunakan tabel berikut:

sysjobs

Menyimpan informasi tentang pekerjaan.

sysjobsteps

Menyimpan informasi tentang langkah-langkah pekerjaan.

sysschedules

Menyimpan informasi tentang jadwal pekerjaan.

jadwal sysjob

Menyimpan informasi jadwal untuk pekerjaan individu.

sysjobhistory

Menyimpan informasi tentang menjalankan pekerjaan terjadwal.

Prosedur yang meniru SQL Server Agent di Postgre SQL

Untuk meniru Agen SQL Server, paket ekstensi menggunakan prosedur berikut:

sp_add_pekerjaan

Menambahkan pekerjaan baru.

sp_add_jobstep

Menambahkan langkah ke pekerjaan.

sp_add_schedule

Membuat aturan jadwal baru di Amazon CloudWatch. Anda dapat menggunakan jadwal ini dengan sejumlah pekerjaan.

sp_attach_schedule

Menetapkan jadwal untuk pekerjaan yang dipilih.

sp_add_jobschedule

Membuat aturan jadwal untuk pekerjaan di Amazon CloudWatch dan menetapkan target untuk aturan ini.

sp_update_job

Memperbarui atribut pekerjaan yang dibuat sebelumnya.

sp_update_jobstep

Memperbarui atribut langkah dalam pekerjaan.

sp_update_schedule

Memperbarui atribut aturan jadwal di Amazon CloudWatch.

sp_update_jobschedule

Memperbarui atribut jadwal untuk pekerjaan yang ditentukan.

sp_delete_job

Menghapus pekerjaan.

sp_delete_jobstep

Menghapus langkah pekerjaan dari pekerjaan.

sp_delete_schedule

Menghapus jadwal.

sp_delete_jobschedule

Menghapus aturan jadwal untuk pekerjaan yang ditentukan dari Amazon CloudWatch.

sp_detach_schedule

Menghapus hubungan antara jadwal dan pekerjaan.

get_jobs, update_job

Prosedur internal yang berinteraksi dengan AWS Elastic Beanstalk.

sp_verify_job_date, sp_verify_job_time, sp_verify_job, sp_verify_jobstep, sp_verify_job_identifiers, sp_verify_schedule_identifiers

Prosedur internal yang memeriksa pengaturan.

Sintaks untuk prosedur yang meniru Agen SQL Server di Postgre SQL

aws_sqlserver_ext.sp_add_jobProsedur dalam paket ekstensi mengemulasi msdb.dbo.sp_add_job prosedur. Untuk informasi selengkapnya tentang prosedur Agen SQL Server sumber, lihat dokumentasi teknis 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

aws_sqlserver_ext.sp_add_jobstepProsedur dalam paket ekstensi mengemulasi msdb.dbo.sp_add_jobstep prosedur. Untuk informasi selengkapnya tentang prosedur Agen SQL Server sumber, lihat dokumentasi teknis 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

aws_sqlserver_ext.sp_add_scheduleProsedur dalam paket ekstensi mengemulasi msdb.dbo.sp_add_schedule prosedur. Untuk informasi selengkapnya tentang prosedur Agen SQL Server sumber, lihat dokumentasi teknis 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

aws_sqlserver_ext.sp_attach_scheduleProsedur dalam paket ekstensi mengemulasi msdb.dbo.sp_attach_schedule prosedur. Untuk informasi selengkapnya tentang prosedur Agen SQL Server sumber, lihat dokumentasi teknis 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

aws_sqlserver_ext.sp_add_jobscheduleProsedur dalam paket ekstensi mengemulasi msdb.dbo.sp_add_jobschedule prosedur. Untuk informasi selengkapnya tentang prosedur Agen SQL Server sumber, lihat dokumentasi teknis 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

aws_sqlserver_ext.sp_delete_jobProsedur dalam paket ekstensi mengemulasi msdb.dbo.sp_delete_job prosedur. Untuk informasi selengkapnya tentang prosedur Agen SQL Server sumber, lihat dokumentasi teknis 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

aws_sqlserver_ext.sp_delete_jobstepProsedur dalam paket ekstensi mengemulasi msdb.dbo.sp_delete_jobstep prosedur. Untuk informasi selengkapnya tentang prosedur Agen SQL Server sumber, lihat dokumentasi teknis Microsoft.

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

aws_sqlserver_ext.sp_delete_jobscheduleProsedur dalam paket ekstensi mengemulasi msdb.dbo.sp_delete_jobschedule prosedur. Untuk informasi selengkapnya tentang prosedur Agen SQL Server sumber, lihat dokumentasi teknis 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

aws_sqlserver_ext.sp_delete_scheduleProsedur dalam paket ekstensi mengemulasi msdb.dbo.sp_delete_schedule prosedur. Untuk informasi selengkapnya tentang prosedur Agen SQL Server sumber, lihat dokumentasi teknis 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

aws_sqlserver_ext.sp_detach_scheduleProsedur dalam paket ekstensi mengemulasi msdb.dbo.sp_detach_schedule prosedur. Untuk informasi selengkapnya tentang prosedur Agen SQL Server sumber, lihat dokumentasi teknis 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

aws_sqlserver_ext.sp_update_jobProsedur dalam paket ekstensi mengemulasi msdb.dbo.sp_update_job prosedur. Untuk informasi selengkapnya tentang prosedur Agen SQL Server sumber, lihat dokumentasi teknis 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

aws_sqlserver_ext.sp_update_jobscheduleProsedur dalam paket ekstensi mengemulasi msdb.dbo.sp_update_jobschedule prosedur. Untuk informasi selengkapnya tentang prosedur Agen SQL Server sumber, lihat dokumentasi teknis 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

aws_sqlserver_ext.sp_update_jobstepProsedur dalam paket ekstensi mengemulasi msdb.dbo.sp_update_jobstep prosedur. Untuk informasi selengkapnya tentang prosedur Agen SQL Server sumber, lihat dokumentasi teknis 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

aws_sqlserver_ext.sp_update_scheduleProsedur dalam paket ekstensi mengemulasi msdb.dbo.sp_update_schedule prosedur. Untuk informasi selengkapnya tentang prosedur Agen SQL Server sumber, lihat dokumentasi teknis 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

Contoh untuk menggunakan prosedur yang meniru Agen SQL Server di Postgre SQL

Untuk menambahkan pekerjaan baru, gunakan aws_sqlserver_ext.sp_add_job prosedur seperti yang ditunjukkan berikut.

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

Untuk menambahkan langkah pekerjaan baru, gunakan aws_sqlserver_ext.sp_add_jobstep prosedur seperti yang ditunjukkan berikut.

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

Untuk menambahkan jadwal sederhana, gunakan aws_sqlserver_ext.sp_add_schedule prosedur seperti yang ditunjukkan berikut.

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

Untuk mengatur jadwal pekerjaan, gunakan aws_sqlserver_ext.sp_attach_schedule prosedur seperti yang ditunjukkan berikut.

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

Untuk membuat jadwal pekerjaan, gunakan aws_sqlserver_ext.sp_add_jobschedule prosedur seperti yang ditunjukkan berikut.

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

Gunakan contoh kasus untuk meniru Agen SQL Server di Postgre SQL

Jika kode basis data sumber Anda menggunakan Agen SQL Server untuk menjalankan pekerjaan, Anda dapat menggunakan paket SQL ekstensi SQL Server ke Postgre untuk mengonversi kode ini AWS SCT ke Postgre. SQL Paket ekstensi menggunakan AWS Lambda fungsi untuk meniru perilaku Agen SQL Server.

Anda dapat membuat AWS Lambda fungsi baru atau mendaftarkan fungsi yang ada.

Untuk membuat AWS Lambda fungsi baru
  1. Di AWS SCT, di pohon database target, buka menu konteks (klik kanan), pilih Terapkan paket ekstensi untuk, lalu pilih SQLPostgre.

    Wizard paket ekstensi muncul.

  2. Pada tab Layanan emulasi Agen SQL Server, lakukan hal berikut:

    • Pilih Buat AWS Lambda fungsi.

    • Untuk login Database, masukkan nama pengguna database target.

    • Untuk kata sandi Database, masukkan kata sandi untuk nama pengguna yang Anda masukkan pada langkah sebelumnya.

    • Untuk folder pustaka Python, masukkan path ke folder pustaka Python Anda.

    • Pilih Create AWS Lambda Function, lalu pilih Next.

Untuk mendaftarkan AWS Lambda fungsi yang Anda gunakan sebelumnya
  • Jalankan skrip berikut pada database target Anda.

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

    Dalam contoh sebelumnya, ARN adalah Amazon Resource Name (ARN) dari AWS Lambda fungsi yang diterapkan.

Contoh berikut menciptakan tugas sederhana yang terdiri dari satu langkah. Setiap lima menit, tugas ini menjalankan job_example fungsi yang dibuat sebelumnya. Fungsi ini menyisipkan catatan ke dalam job_example_table tabel.

Untuk membuat tugas sederhana ini
  1. Buat pekerjaan menggunakan aws_sqlserver_ext.sp_add_job fungsi seperti yang ditunjukkan berikut.

    SELECT FROM aws_sqlserver_ext.sp_add_job ( par_job_name := 'test_simple_job');
  2. Buat langkah pekerjaan menggunakan aws_sqlserver_ext.sp_add_jobstep fungsi seperti yang ditunjukkan berikut.

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

    Langkah pekerjaan menentukan apa fungsi yang dilakukan.

  3. Buat penjadwal untuk pekerjaan menggunakan aws_sqlserver_ext.sp_add_jobschedule fungsi seperti yang ditunjukkan berikut.

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

    Langkah pekerjaan menentukan apa fungsi yang dilakukan.

Untuk menghapus pekerjaan ini, gunakan aws_sqlserver_ext.sp_delete_job fungsi seperti yang ditunjukkan berikut.

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