Menggunakan paket AWS SCT ekstensi untuk meniru SQL Server Database Mail 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 SQL Server Database Mail di Postgre SQL

Anda dapat menggunakan SQL Server Database Mail untuk mengirim pesan e-mail ke pengguna dari SQL Server Database Engine atau Azure SQL Managed Instance. Pesan email ini dapat berisi hasil kueri atau menyertakan file dari sumber daya apa pun di jaringan Anda. Untuk informasi selengkapnya tentang SQL Server Database Mail, lihat dokumentasi teknis Microsoft.

Postgre SQL tidak memiliki padanan untuk SQL Server Database Mail. Untuk meniru fitur SQL Server Database Mail, AWS SCT buat paket ekstensi. Paket ekstensi ini menggunakan AWS Lambda dan Amazon Simple Email Service (AmazonSES). AWS Lambda menyediakan pengguna dengan antarmuka untuk berinteraksi dengan layanan pengiriman SES email Amazon. Untuk mengatur interaksi ini, tambahkan Amazon Resource Name (ARN) dari fungsi Lambda Anda.

Untuk akun email baru, gunakan perintah berikut.

do $$ begin PERFORM sysmail_add_account_sp ( par_account_name :='your_account_name', par_email_address := 'your_account_email', par_display_name := 'your_account_display_name', par_mailserver_type := 'AWSLAMBDA' par_mailserver_name := 'ARN' ); end; $$ language plpgsql;

Untuk menambahkan fungsi Lambda Anda ke akun email yang ada, gunakan perintah berikut. ARN

do $$ begin PERFORM sysmail_update_account_sp ( par_account_name :='existind_account_name', par_mailserver_type := 'AWSLAMBDA' par_mailserver_name := 'ARN' ); end; $$ language plpgsql;

Dalam contoh sebelumnya, ARN adalah fungsi ARN Lambda Anda.

Untuk meniru perilaku SQL Server Database Mail di PostgreSQL, paket AWS SCT ekstensi menggunakan tabel, tampilan, dan prosedur berikut.

Tabel yang meniru SQL Server Database Mail di Postgre SQL

Untuk meniru SQL Server Database Mail, paket ekstensi menggunakan tabel berikut:

sysmail_akun

Menyimpan informasi tentang akun email.

sysmail_profil

Menyimpan informasi tentang profil pengguna.

sysmail_server

Menyimpan informasi tentang server email.

sysmail_mailitems

Menyimpan daftar pesan email.

lampiran sysmail_

Berisi satu baris untuk setiap lampiran email.

sysmail_log

Menyimpan informasi layanan tentang mengirim pesan email.

sysmail_profileakun

Menyimpan informasi tentang profil pengguna dan akun email.

Tampilan yang meniru SQL Server Database Mail di Postgre SQL

Untuk meniru SQL Server Database Mail, AWS SCT membuat tampilan berikut dalam database Postgre untuk memastikan SQL kompatibilitas. Paket ekstensi tidak menggunakannya, tetapi kode yang dikonversi dapat menanyakan tampilan ini.

sysmail_allitems

Termasuk daftar semua email.

sysmail_faileditems

Termasuk daftar email yang tidak dapat dikirim.

sysmail_sentitems

Termasuk daftar email yang dikirim.

sysmail_unsentitems

Termasuk daftar email yang belum terkirim.

sysmail_mailattachments

Termasuk daftar file terlampir.

Prosedur yang meniru SQL Server Database Mail di Postgre SQL

Untuk meniru SQL Server Database Mail, paket ekstensi menggunakan prosedur berikut:

sp_send_dbmail

Mengirim email ke penerima yang ditentukan.

sysmail_add_profile_sp

Membuat profil pengguna baru.

sysmail_add_account_sp

Membuat akun email baru yang menyimpan informasi seperti kredensi Simple Mail Transfer Protocol (SMTP), dan sebagainya.

sysmail_add_profileaccount_sp

Menambahkan akun email ke profil pengguna yang ditentukan.

sysmail_update_profile_sp

Mengubah atribut profil pengguna seperti deskripsi, nama, dan sebagainya.

sysmail_update_account_sp

Mengubah informasi di akun email yang ada.

sysmail_update_profileaccount_sp

Memperbarui informasi akun email di profil pengguna yang ditentukan.

sysmail_delete_profileaccount_sp

Menghapus akun email dari profil pengguna yang ditentukan.

sysmail_delete_account_sp

Menghapus akun email.

sysmail_delete_profile_sp

Menghapus profil pengguna.

sysmail_delete_mailitems_sp

Menghapus email dari tabel internal.

sysmail_help_profile_sp

Menampilkan informasi tentang profil pengguna.

sysmail_help_account_sp

Menampilkan informasi tentang akun email.

sysmail_help_profileaccount_sp

Menampilkan informasi tentang akun email yang terkait dengan profil pengguna.

sysmail_dbmail_json

Prosedur internal yang menghasilkan JSON permintaan untuk AWS Lambda fungsi.

sysmail_verify_profile_sp, sysmail_verify_account_sp, sysmail_verify_addressparams_sp

Prosedur internal yang memeriksa pengaturan.

sp_get_dbmail, sp_set_dbmail, sysmail_dbmail_xml

Prosedur internal yang tidak digunakan lagi.

Sintaks untuk prosedur yang meniru SQL Server Database Mail di Postgre SQL

aws_sqlserver_ext.sp_send_dbmailProsedur dalam paket ekstensi mengemulasi msdb.dbo.sp_send_dbmail prosedur. Untuk informasi selengkapnya tentang prosedur Mail Database SQL Server sumber, lihat dokumentasi teknis Microsoft.

par_profile_name varchar = NULL::character varying, par_recipients text = NULL::text, par_copy_recipients text = NULL::text, par_blind_copy_recipients text = NULL::text, par_subject varchar = NULL::character varying, par_body text = NULL::text, par_body_format varchar = NULL::character varying, par_importance varchar = 'NORMAL'::character varying, par_sensitivity varchar = 'NORMAL'::character varying, par_file_attachments text = NULL::text, par_query text = NULL::text, par_execute_query_database varchar = NULL::character varying, par_attach_query_result_as_file smallint = 0, par_query_attachment_filename varchar = NULL::character varying, par_query_result_header smallint = 1, par_query_result_width integer = 256, par_query_result_separator VARCHAR = ' '::character varying, par_exclude_query_output smallint = 0, par_append_query_error smallint = 0, par_query_no_truncate smallint = 0, par_query_result_no_padding smallint = 0, out par_mailitem_id integer, par_from_address text = NULL::text, par_reply_to text = NULL::text, out returncode integer

aws_sqlserver_ext.sysmail_delete_mailitems_spProsedur dalam paket ekstensi mengemulasi msdb.dbo.sysmail_delete_mailitems_sp prosedur. Untuk informasi selengkapnya tentang prosedur Mail Database SQL Server sumber, lihat dokumentasi teknis Microsoft.

par_sent_before timestamp = NULL::timestamp without time zone, par_sent_status varchar = NULL::character varying, out returncode integer

aws_sqlserver_ext.sysmail_add_profile_spProsedur dalam paket ekstensi mengemulasi msdb.dbo.sysmail_add_profile_sp prosedur. Untuk informasi selengkapnya tentang prosedur Mail Database SQL Server sumber, lihat dokumentasi teknis Microsoft.

par_profile_name varchar, par_description varchar = NULL::character varying, out par_profile_id integer, out returncode integer

aws_sqlserver_ext.sysmail_add_account_spProsedur dalam paket ekstensi mengemulasi msdb.dbo.sysmail_add_account_sp prosedur. Untuk informasi selengkapnya tentang prosedur Mail Database SQL Server sumber, lihat dokumentasi teknis Microsoft.

par_account_name varchar par_email_address varchar par_display_name varchar = NULL::character varying par_replyto_address varchar = NULL::character varying par_description varchar = NULL::character varying par_mailserver_name varchar = NULL::character varying par_mailserver_type varchar = 'SMTP'::bpchar par_port integer = 25 par_username varchar = NULL::character varying par_password varchar = NULL::character varying par_use_default_credentials smallint = 0 par_enable_ssl smallint = 0 out par_account_id integer out returncode integer

aws_sqlserver_ext.sysmail_add_profileaccount_spProsedur dalam paket ekstensi mengemulasi msdb.dbo.sysmail_add_profileaccount_sp prosedur. Untuk informasi selengkapnya tentang prosedur Mail Database SQL Server sumber, lihat dokumentasi teknis Microsoft.

par_profile_id integer = NULL::integer, par_profile_name varchar = NULL::character varying, par_account_id integer = NULL::integer, par_account_name varchar = NULL::character varying, par_sequence_number integer = NULL::integer, out returncode integer

aws_sqlserver_ext.sysmail_help_profile_spProsedur dalam paket ekstensi mengemulasi msdb.dbo.sysmail_help_profile_sp prosedur. Untuk informasi selengkapnya tentang prosedur Mail Database SQL Server sumber, lihat dokumentasi teknis Microsoft.

par_profile_id integer = NULL::integer, par_profile_name varchar = NULL::character varying, out returncode integer

aws_sqlserver_ext.sysmail_update_profile_spProsedur dalam paket ekstensi mengemulasi msdb.dbo.sysmail_update_profile_sp prosedur. Untuk informasi selengkapnya tentang prosedur Mail Database SQL Server sumber, lihat dokumentasi teknis Microsoft.

par_profile_id integer = NULL::integer, par_profile_name varchar = NULL::character varying, par_description varchar = NULL::character varying, out returncode integer

aws_sqlserver_ext.sysmail_delete_profile_spProsedur dalam paket ekstensi mengemulasi msdb.dbo.sysmail_delete_profile_sp prosedur. Untuk informasi selengkapnya tentang prosedur Mail Database SQL Server sumber, lihat dokumentasi teknis Microsoft.

par_profile_id integer = NULL::integer, par_profile_name varchar = NULL::character varying, par_force_delete smallint = 1, out returncode integer

aws_sqlserver_ext.sysmail_help_account_spProsedur dalam paket ekstensi mengemulasi msdb.dbo.sysmail_help_account_sp prosedur. Untuk informasi selengkapnya tentang prosedur Mail Database SQL Server sumber, lihat dokumentasi teknis Microsoft.

par_account_id integer = NULL::integer, par_account_name varchar = NULL::character varying, out returncode integer

aws_sqlserver_ext.sysmail_update_account_spProsedur dalam paket ekstensi mengemulasi msdb.dbo.sysmail_update_account_sp prosedur. Untuk informasi selengkapnya tentang prosedur Mail Database SQL Server sumber, lihat dokumentasi teknis Microsoft.

par_account_id integer = NULL::integer, par_account_name varchar = NULL::character varying, par_email_address varchar = NULL::character varying, par_display_name varchar = NULL::character varying, par_replyto_address varchar = NULL::character varying, par_description varchar = NULL::character varying, par_mailserver_name varchar = NULL::character varying, par_mailserver_type varchar = NULL::character varying, par_port integer = NULL::integer, par_username varchar = NULL::character varying, par_password varchar = NULL::character varying, par_use_default_credentials smallint = NULL::smallint, par_enable_ssl smallint = NULL::smallint, par_timeout integer = NULL::integer, par_no_credential_change smallint = NULL::smallint, out returncode integer

aws_sqlserver_ext.sysmail_delete_account_spProsedur dalam paket ekstensi mengemulasi msdb.dbo.sysmail_delete_account_sp prosedur. Untuk informasi selengkapnya tentang prosedur Mail Database SQL Server sumber, lihat dokumentasi teknis Microsoft.

par_account_id integer = NULL::integer, par_account_name varchar = NULL::character varying, out returncode integer

aws_sqlserver_ext.sysmail_help_profileaccount_spProsedur dalam paket ekstensi mengemulasi msdb.dbo.sysmail_help_profileaccount_sp prosedur. Untuk informasi selengkapnya tentang prosedur Mail Database SQL Server sumber, lihat dokumentasi teknis Microsoft.

par_profile_id integer = NULL::integer, par_profile_name varchar = NULL::character varying, par_account_id integer = NULL::integer, par_account_name varchar = NULL::character varying, out returncode integer

aws_sqlserver_ext.sysmail_update_profileaccount_spProsedur dalam paket ekstensi mengemulasi msdb.dbo.sysmail_update_profileaccount_sp prosedur. Untuk informasi selengkapnya tentang prosedur Mail Database SQL Server sumber, lihat dokumentasi teknis Microsoft.

par_profile_id integer = NULL::integer, par_profile_name varchar = NULL::character varying, par_account_id integer = NULL::integer, par_account_name varchar = NULL::character varying, par_sequence_number integer = NULL::integer, out returncode integer

aws_sqlserver_ext.sysmail_delete_profileaccount_spProsedur dalam paket ekstensi mengemulasi msdb.dbo.sysmail_delete_profileaccount_sp prosedur. Untuk informasi selengkapnya tentang prosedur Mail Database SQL Server sumber, lihat dokumentasi teknis Microsoft.

par_profile_id integer = NULL::integer, par_profile_name varchar = NULL::character varying, par_account_id integer = NULL::integer, par_account_name varchar = NULL::character varying, out returncode integer

Contoh untuk menggunakan prosedur yang meniru SQL Server Database Mail di Postgre SQL

Untuk mengirim email, gunakan aws_sqlserver_ext.sp_send_dbmail prosedur seperti yang ditunjukkan berikut.

PERFORM sp_send_dbmail ( par_profile_name := 'Administrator', par_recipients := 'hello@rusgl.info', par_subject := 'Automated Success Message', par_body := 'The stored procedure finished' );

Contoh berikut menunjukkan cara mengirim email dengan hasil query.

PERFORM sp_send_dbmail ( par_profile_name := 'Administrator', par_recipients := 'hello@rusgl.info', par_subject := 'Account with id = 1', par_query := 'SELECT COUNT(*)FROM Account WHERE id = 1' );

Contoh berikut menunjukkan cara mengirim email dengan HTML kode.

DECLARE var_tableHTML TEXT; SET var_tableHTML := CONCAT( '<H1>Work Order Report</H1>', '<table border="1">', '<tr><th>Work Order ID</th><th>Product ID</th>', '<th>Name</th><th>Order Qty</th><th>Due Date</th>', '<th>Expected Revenue</th></tr>', '</table>' ); PERFORM sp_send_dbmail ( par_recipients := 'hello@rusgl.info', par_subject := 'Work Order List', par_body := var_tableHTML, par_body_format := 'HTML' );

Untuk menghapus email, gunakan aws_sqlserver_ext.sysmail_delete_mailitems_sp prosedur seperti yang ditunjukkan berikut.

DECLARE var_GETDATE datetime; SET var_GETDATE = NOW(); PERFORM sysmail_delete_mailitems_sp ( par_sent_before := var_GETDATE );

Contoh berikut menunjukkan cara menghapus email tertua.

PERFORM sysmail_delete_mailitems_sp ( par_sent_before := '31.12.2015' );

Contoh berikut menunjukkan cara menghapus semua email yang tidak dapat dikirim.

PERFORM sysmail_delete_mailitems_sp ( par_sent_status := 'failed' );

Untuk membuat profil pengguna baru, gunakan aws_sqlserver_ext.sysmail_add_profile_sp prosedur seperti yang ditunjukkan berikut.

PERFORM sysmail_add_profile_sp ( profile_name := 'Administrator', par_description := 'administrative mail' );

Contoh berikut menunjukkan cara membuat profil baru dan menyimpan pengenal profil unik dalam variabel.

DECLARE var_profileId INT; SELECT par_profile_id FROM sysmail_add_profile_sp ( profile_name := 'Administrator', par_description := ' Profile used for administrative mail.') INTO var_profileId; SELECT var_profileId;

Untuk membuat akun email baru, gunakan aws_sqlserver_ext.sysmail_add_account_sp prosedur seperti yang ditunjukkan berikut.

PERFORM sysmail_add_account_sp ( par_account_name :='Audit Account', par_email_address := 'dba@rusgl.info', par_display_name := 'Test Automated Mailer', par_description := 'Account for administrative e-mail.', par_mailserver_type := 'AWSLAMBDA' par_mailserver_name := 'arn:aws:lambda:us-west-2:555555555555:function:pg_v3' );

Untuk menambahkan akun email ke profil pengguna, gunakan aws_sqlserver_ext.sysmail_add_profileaccount_sp prosedur seperti yang ditunjukkan berikut.

PERFORM sysmail_add_profileaccount_sp ( par_account_name := 'Administrator', par_account_name := 'Audit Account', par_sequence_number := 1 );

Gunakan contoh kasus untuk meniru SQL Server Database Mail di Postgre SQL

Jika kode basis data sumber Anda menggunakan SQL Server Database Mail untuk mengirim email, Anda dapat menggunakan paket AWS SCT ekstensi untuk mengonversi kode ini ke SQL Postgre.

Untuk mengirim email dari database Postgre SQL Anda
  1. Buat dan konfigurasikan AWS Lambda fungsi Anda.

  2. Terapkan paket AWS SCT ekstensi.

  3. Buat profil pengguna menggunakan sysmail_add_profile_sp fungsi seperti yang ditunjukkan berikut.

  4. Buat akun email menggunakan sysmail_add_account_sp fungsi seperti yang ditunjukkan berikut.

  5. Tambahkan akun email ini ke profil pengguna Anda menggunakan sysmail_add_profileaccount_sp fungsi seperti yang ditunjukkan berikut.

    CREATE OR REPLACE FUNCTION aws_sqlserver_ext. proc_dbmail_settings_msdb() RETURNS void AS $BODY$ BEGIN PERFORM aws_sqlserver_ext.sysmail_add_profile_sp( par_profile_name := 'Administrator', par_description := 'administrative mail' ); PERFORM aws_sqlserver_ext.sysmail_add_account_sp( par_account_name := 'Audit Account', par_description := 'Account for administrative e-mail.', par_email_address := 'dba@rusgl.info', par_display_name := 'Test Automated Mailer', par_mailserver_type := 'AWSLAMBDA' par_mailserver_name := 'your_ARN' ); PERFORM aws_sqlserver_ext.sysmail_add_profileaccount_sp( par_profile_name := 'Administrator', par_account_name := 'Audit Account', par_sequence_number := 1 ); END; $BODY$ LANGUAGE plpgsql;
  6. Kirim email menggunakan sp_send_dbmail fungsi seperti yang ditunjukkan berikut.

    CREATE OR REPLACE FUNCTION aws_sqlserver_ext. proc_dbmail_send_msdb() RETURNS void AS $BODY$ BEGIN PERFORM aws_sqlserver_ext.sp_send_dbmail( par_profile_name := 'Administrator', par_recipients := 'hello@rusgl.info', par_body := 'The stored procedure finished', par_subject := 'Automated Success Message' ); END; $BODY$ LANGUAGE plpgsql;

Untuk melihat informasi tentang semua profil pengguna, gunakan sysmail_help_profile_sp prosedur seperti yang ditunjukkan berikut.

SELECT FROM aws_sqlserver_ext.sysmail_help_profile_sp();

Contoh berikut menampilkan informasi tentang profil pengguna tertentu.

select from aws_sqlserver_ext.sysmail_help_profile_sp(par_profile_id := 1); select from aws_sqlserver_ext.sysmail_help_profile_sp(par_profile_name := 'Administrator');

Untuk melihat informasi tentang semua akun email, gunakan sysmail_help_account_sp prosedur seperti yang ditunjukkan berikut.

select from aws_sqlserver_ext.sysmail_help_account_sp();

Contoh berikut menampilkan informasi tentang akun email tertentu.

select from aws_sqlserver_ext.sysmail_help_account_sp(par_account_id := 1); select from aws_sqlserver_ext.sysmail_help_account_sp(par_account_name := 'Audit Account');

Untuk melihat informasi tentang semua akun email yang terkait dengan profil pengguna, gunakan sysmail_help_profileaccount_sp prosedur seperti yang ditunjukkan berikut.

select from aws_sqlserver_ext.sysmail_help_profileaccount_sp();

Contoh berikut memfilter catatan berdasarkan pengenal, nama profil, atau nama akun.

select from aws_sqlserver_ext.sysmail_help_profileaccount_sp(par_profile_id := 1); select from aws_sqlserver_ext.sysmail_help_profileaccount_sp(par_profile_id := 1, par_account_id := 1); select from aws_sqlserver_ext.sysmail_help_profileaccount_sp(par_profile_name := 'Administrator'); select from aws_sqlserver_ext.sysmail_help_profileaccount_sp(par_account_name := 'Audit Account');

Untuk mengubah nama atau deskripsi profil pengguna, gunakan sysmail_update_profile_sp prosedur seperti yang ditunjukkan berikut.

select aws_sqlserver_ext.sysmail_update_profile_sp( par_profile_id := 2, par_profile_name := 'New profile name' );

Untuk mengubah pengaturan akun email, gunakan ysmail_update_account_sp prosedur seperti yang ditunjukkan berikut.

select from aws_sqlserver_ext.sysmail_update_account_sp ( par_account_name := 'Audit Account', par_mailserver_name := 'arn:aws:lambda:region:XXXXXXXXXXXX:function:func_test', par_mailserver_type := 'AWSLAMBDA' );