AWS SCT 拡張パックを使用して Postgre でSQLサーバーデータベースメールをエミュレートするSQL - AWS Schema Conversion Tool

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS SCT 拡張パックを使用して Postgre でSQLサーバーデータベースメールをエミュレートするSQL

SQL サーバーデータベースメールを使用して、SQLサーバーデータベースエンジンまたは Azure SQLマネージドインスタンスからユーザーに E メールメッセージを送信できます。これらのメールメッセージには、クエリ結果を含めたり、ネットワーク上の任意のリソースからのファイルを含めることができます。SQL サーバーデータベースメールの詳細については、「Microsoft の技術ドキュメント」を参照してください。

PostgreSQL にはサーバーSQLデータベースメールに相当するものはありません。SQL サーバーデータベースメール機能をエミュレートするために、 AWS SCT は拡張パックを作成します。この拡張パックは、 AWS Lambda と Amazon Simple Email Service (Amazon ) を使用しますSES。 AWS Lambda は、Amazon SES E メール送信サービスとやり取りするためのインターフェイスをユーザーに提供します。このインタラクションを設定するには、Lambda 関数の Amazon リソースネーム (ARN) を追加します。

新しいE メールアカウントの場合、次のコマンドを使用します。

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;

Lambda 関数ARNの を既存の E メールアカウントに追加するには、次のコマンドを使用します。

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

前の例では、ARN は Lambda 関数ARNの です。

Postgre のSQLサーバーデータベースメールの動作をエミュレートするためにSQL、 AWS SCT 拡張パックは次のテーブル、ビュー、およびプロシージャを使用します。

Postgre でSQLサーバーデータベースメールをエミュレートするテーブルSQL

SQL サーバーデータベースメールをエミュレートするために、拡張パックは次のテーブルを使用します。

sysmail_account

E メールアカウントに関する情報を格納します。

sysmail_profile

ユーザープロファイルに関する情報を格納します。

sysmail_server

E メールサーバに関する情報を格納します。

sysmail_mailitems

メールメッセージのリストを保存します。

sysmail_attachments

E メール添付ごとに 1 つの行が含まれます。

sysmail_log

E メール送信に関するサービス情報を格納します。

sysmail_profileaccount

ユーザープロファイルとE メールアカウントに関する情報を格納します。

Postgre でSQLサーバーデータベースメールをエミュレートするビューSQL

SQL サーバーデータベースメールをエミュレートするために、 は PostgreSQL データベースに次のビュー AWS SCT を作成して互換性を確保します。拡張パックではこれらのビューを使用しませんが、変換したコードでこれらのビューをクエリできます。

sysmail_allitems

すべてのメールのリストが含まれます。

sysmail_faileditems

送信できなかったメールのリストが含まれます。

sysmail_sentitems

送信済みメールのリストが含まれます。

sysmail_unsentitems

まだ送信されていないメールのリストが含まれます。

sysmail_mailattachments

添付ファイルのリストが含まれます。

Postgre でSQLサーバーデータベースメールをエミュレートする手順SQL

SQL サーバーデータベースメールをエミュレートするために、拡張パックは次の手順を使用します。

sp_send_dbmail

指定した受信者に E メールを送信します。

sysmail_add_profile_sp

新しいユーザープロファイルを作成します。

sysmail_add_account_sp

Simple Mail Transfer Protocol (SMTP) 認証情報などの情報を保存する新しい E メールアカウントを作成します。

sysmail_add_profileaccount_sp

指定したユーザープロファイルにメールアカウントを追加します。

sysmail_update_profile_sp

説明、名前など、ユーザープロファイルの属性を変更します。

sysmail_update_account_sp

既存のメールアカウントの情報を変更します。

sysmail_update_profileaccount_sp

指定したユーザープロファイルのメールアカウント情報を更新します。

sysmail_delete_profileaccount_sp

指定したユーザープロファイルからメールアカウントを削除します。

sysmail_delete_account_sp

E メールアカウントを削除します。

sysmail_delete_profile_sp

ユーザープロファイルを削除します。

sysmail_delete_mailitems_sp

内部テーブルからメールを削除します。

sysmail_help_profile_sp

ユーザープロファイルに関する情報を表示します。

sysmail_help_account_sp

E メールアカウントに関する情報を表示します。

sysmail_help_profileaccount_sp

ユーザープロファイルに関連付けられている電子メールアカウントに関する情報を表示します。

sysmail_dbmail_json

AWS Lambda 関数のJSONリクエストを生成する内部プロシージャ。

sysmail_verify_profile_sp、sysmail_verify_account_sp、sysmail_verify_addressparams_sp

設定を確認する内部プロシージャ。

sp_get_dbmail、sp_set_dbmail、sysmail_dbmail_xml

非推奨の内部プロシージャ。

Postgre でSQLサーバーデータベースメールをエミュレートするプロシージャの構文SQL

拡張パック内の aws_sqlserver_ext.sp_send_dbmail プロシージャは、msdb.dbo.sp_send_dbmail プロシージャをエミュレートします。ソースSQLサーバーデータベースメールの手順の詳細については、「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_sp プロシージャは、msdb.dbo.sysmail_delete_mailitems_sp プロシージャをエミュレートします。ソースSQLサーバーデータベースメールの手順の詳細については、「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_sp プロシージャは、msdb.dbo.sysmail_add_profile_sp プロシージャをエミュレートします。ソースSQLサーバーデータベースメールの手順の詳細については、「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_sp プロシージャは、msdb.dbo.sysmail_add_account_sp プロシージャをエミュレートします。ソースSQLサーバーデータベースメールの手順の詳細については、「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_sp プロシージャは、msdb.dbo.sysmail_add_profileaccount_sp プロシージャをエミュレートします。ソースSQLサーバーデータベースメールの手順の詳細については、「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_sp プロシージャは、msdb.dbo.sysmail_help_profile_sp プロシージャをエミュレートします。ソースSQLサーバーデータベースメールの手順の詳細については、「Microsoft 技術ドキュメント」を参照してください。

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

拡張パック内の aws_sqlserver_ext.sysmail_update_profile_sp プロシージャは、msdb.dbo.sysmail_update_profile_sp プロシージャをエミュレートします。ソースSQLサーバーデータベースメールの手順の詳細については、「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_sp プロシージャは、msdb.dbo.sysmail_delete_profile_sp プロシージャをエミュレートします。ソースSQLサーバーデータベースメールの手順の詳細については、「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_sp プロシージャは、msdb.dbo.sysmail_help_account_sp プロシージャをエミュレートします。ソースSQLサーバーデータベースメールの手順の詳細については、「Microsoft 技術ドキュメント」を参照してください。

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

拡張パック内の aws_sqlserver_ext.sysmail_update_account_sp プロシージャは、msdb.dbo.sysmail_update_account_sp プロシージャをエミュレートします。ソースSQLサーバーデータベースメールの手順の詳細については、「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_sp プロシージャは、msdb.dbo.sysmail_delete_account_sp プロシージャをエミュレートします。ソースSQLサーバーデータベースメールの手順の詳細については、「Microsoft 技術ドキュメント」を参照してください。

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

拡張パック内の aws_sqlserver_ext.sysmail_help_profileaccount_sp プロシージャは、msdb.dbo.sysmail_help_profileaccount_sp プロシージャをエミュレートします。ソースSQLサーバーデータベースメールの手順の詳細については、「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_sp プロシージャは、msdb.dbo.sysmail_update_profileaccount_sp プロシージャをエミュレートします。ソースSQLサーバーデータベースメールの手順の詳細については、「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_sp プロシージャは、msdb.dbo.sysmail_delete_profileaccount_sp プロシージャをエミュレートします。ソースSQLサーバーデータベースメールの手順の詳細については、「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

Postgre でSQLサーバーデータベースメールをエミュレートするプロシージャを使用する例SQL

E メールを送信するには、次に示す aws_sqlserver_ext.sp_send_dbmail プロシージャに従います。

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

次の例は、クエリ結果を E メールで送信する方法を示しています。

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

次の例は、HTMLコードを含む E メールを送信する方法を示しています。

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

E メールを削除するには、次に示す aws_sqlserver_ext.sysmail_delete_mailitems_sp の手順に従います。

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

次の例は、最も古い E メールを削除する方法を示しています。

PERFORM sysmail_delete_mailitems_sp ( par_sent_before := '31.12.2015' );

次の例は、送信できないすべての E メールを削除する方法を示しています。

PERFORM sysmail_delete_mailitems_sp ( par_sent_status := 'failed' );

新しいユーザープロファイルを作成するには、次に示す aws_sqlserver_ext.sysmail_add_profile_sp プロシージャに従います。

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

次の例は、新しいプロファイルを作成し、プロファイルの一意の識別子を変数に保存する方法を示しています。

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;

新しいメールアカウントを作成するには、次に示す aws_sqlserver_ext.sysmail_add_account_sp プロシージャに従います。

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

ユーザープロファイルにメールアカウントを追加するには、次に示す aws_sqlserver_ext.sysmail_add_profileaccount_sp プロシージャに従います。

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

Postgre でSQLサーバーデータベースメールをエミュレートするためのユースケースの例SQL

ソースデータベースコードでSQLサーバーデータベースメールを使用して E メールを送信する場合は、 AWS SCT 拡張パックを使用してこのコードを Postgre に変換できますSQL。

PostgreSQL データベースから E メールを送信するには
  1. AWS Lambda 関数を作成して設定します。

  2. AWS SCT 拡張パックを適用します。

  3. 次に示す sysmail_add_profile_sp 関数を使用してユーザープロファイルを作成します。

  4. 次に示す sysmail_add_account_sp 関数を使用してメールアカウントを作成します。

  5. 次に示す sysmail_add_profileaccount_sp 関数を使用して、このメールアカウントをユーザープロファイルに追加します。

    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. 次の sp_send_dbmail 関数を使用して E メールを送信します。

    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;

すべてのユーザープロファイルに関する情報を表示するには、次に示す sysmail_help_profile_sp プロシージャに従います。

SELECT FROM aws_sqlserver_ext.sysmail_help_profile_sp();

次の例では、特定のユーザー プロファイルに関する情報を表示します。

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

すべてのメールアカウントに関する情報を表示するには、次に示す sysmail_help_account_sp プロシージャに従います。

select from aws_sqlserver_ext.sysmail_help_account_sp();

次の例では、特定のE メールアカウントに関する情報を表示します。

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

ユーザープロファイルに関連付けられているすべてのメールアカウントに関する情報を表示するには、次に示す sysmail_help_profileaccount_sp プロシージャに従います。

select from aws_sqlserver_ext.sysmail_help_profileaccount_sp();

次の例では、識別子、プロファイル名、またはアカウント名でレコードをフィルタリングします。

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

ユーザープロファイル名または説明を変更するには、次に示す sysmail_update_profile_sp プロシージャに従います。

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

メールアカウントの設定を変更するには、次に示す ysmail_update_account_sp プロシージャに従います。

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