の使用AWS SCTPostgreSQL で SQL Server データベースメールをエミュレートするための拡張パック - AWS Schema Conversion Tool

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

の使用AWS SCTPostgreSQL で SQL Server データベースメールをエミュレートするための拡張パック

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

PostgreSQL には SQL サーバーのデータベースメールに相当するものはありません。SQL Server データベースメール機能をエミュレートするには、AWS SCT拡張パックを作成します。この拡張パックの使用方法AWS Lambdaおよび Amazon Simple Email Service (Amazon SES)。AWS LambdaAmazon 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;

上の例に、ARNLambda 関数の ARN です。

PostgreSQL の SQL Server データベースメールの動作をエミュレートするには、AWS SCT拡張パックは次のテーブル、ビュー、および手順を使用します。

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

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

sysmail_account

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

sysmail

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

sysmail_server

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

sysmail_mailitems

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

sysmail

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

sysmail_log

電子メールメッセージの送信に関するサービス情報を格納します。

sysmail_profileaccount

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

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

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

sysmail_allitems

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

sysmail_faileditems

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

sysmail_sentitems

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

sysmail_unsentitems

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

sysmail_attachments

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

PostgreSQL で SQL Server データベースメールをエミュレートするプロシージャ

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

sp_send_dbmail

指定された受信者に電子メールを送信します。

sysmail_add_profile_sp

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

sysmail_add_account_sp

簡易メール転送プロトコル (SMTP) の資格情報などの情報を保存する新しい電子メールアカウントを作成します。

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

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

sysmail_verify_profile_sp、sysmail_verify_account_sp、sysmail_verify_addressparams_sp

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

sp_get_dbmail、sp_set_dbmail、sysmail_dbmail_xml

内部手続きは廃止されました。

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

-aws_sqlserver_ext.sp_send_dbmailエクステンションパックのプロシージャはmsdb.dbo.sp_send_dbmailプロシージャ。SQL Server データベースメールソースプロシージャの詳細については、「」を参照してください。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 Server データベースメールソースプロシージャの詳細については、「」を参照してください。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 Server データベースメールソースプロシージャの詳細については、「」を参照してください。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 Server データベースメールソースプロシージャの詳細については、「」を参照してください。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 Server データベースメールソースプロシージャの詳細については、「」を参照してください。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 Server データベースメールソースプロシージャの詳細については、「」を参照してください。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 Server データベースメールソースプロシージャの詳細については、「」を参照してください。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 Server データベースメールソースプロシージャの詳細については、「」を参照してください。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 Server データベースメールソースプロシージャの詳細については、「」を参照してください。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 Server データベースメールソースプロシージャの詳細については、「」を参照してください。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 Server データベースメールソースプロシージャの詳細については、「」を参照してください。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 Server データベースメールソースプロシージャの詳細については、「」を参照してください。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 Server データベースメールソースプロシージャの詳細については、「」を参照してください。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 Server データベースメールソースプロシージャの詳細については、「」を参照してください。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

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

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

メールを削除するには、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 );

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

PERFORM sysmail_delete_mailitems_sp ( par_sent_before := '31.12.2015' );

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

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;

新しい E メールアカウントを作成するには、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 );

PostgreSQL で SQL Server データベースメールをエミュレートするユースケースの例

ソースデータベースのコードで SQL Server Database Mail を使用して電子メールを送信する場合は、AWS SCTこのコードを PostgreSQL に変換するための拡張パック。

PostgreSQL データベースからメールを送信するには

  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. を使用して E メールを送信するsp_send_dbmail次のように機能します。

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

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

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