Utilisation d'un pack d' AWS SCT extension pour émuler le courrier de base de données SQL du serveur dans Postgre SQL - AWS Schema Conversion Tool

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation d'un pack d' AWS SCT extension pour émuler le courrier de base de données SQL du serveur dans Postgre SQL

Vous pouvez utiliser SQL Server Database Mail pour envoyer des e-mails aux utilisateurs à partir du moteur de base de données du SQL serveur ou d'une instance SQL gérée Azure. Ces e-mails peuvent contenir les résultats de requêtes ou inclure des fichiers provenant de n'importe quelle ressource de votre réseau. Pour plus d'informations sur SQL Server Database Mail, consultez la documentation technique Microsoft.

Postgre SQL n'a pas d'équivalent pour SQL Server Database Mail. Pour émuler les fonctionnalités de messagerie de la base de données SQL du serveur, AWS SCT créez un pack d'extension. Ce pack d'extension utilise AWS Lambda Amazon Simple Email Service (AmazonSES). AWS Lambda fournit aux utilisateurs une interface leur permettant d'interagir avec le service d'envoi d'SESe-mails Amazon. Pour configurer cette interaction, ajoutez le nom de ressource Amazon (ARN) de votre fonction Lambda.

Pour créer un nouveau compte de messagerie, utilisez la commande suivante.

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;

Pour ajouter votre fonction Lambda au compte de messagerie existant, utilisez la commande suivante. 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;

Dans les exemples précédents, ARN est celui ARN de votre fonction Lambda.

Pour émuler le comportement du courrier de base de données SQL du serveur dans PostgreSQL, le pack d' AWS SCT extension utilise les tables, les vues et les procédures suivantes.

Tables qui émulent le courrier de base de données SQL du serveur dans Postgre SQL

Pour émuler SQL Server Database Mail, le pack d'extension utilise les tables suivantes :

compte sysmail_

Stocke les informations relatives aux comptes de messagerie.

sysmail_profile

Stocke les informations relatives aux profils utilisateur.

serveur_système

Stocke les informations relatives aux serveurs de messagerie.

sysmail_mailitems

Stocke la liste des e-mails.

sysmail_attachments

Contient une ligne pour chaque pièce jointe à un e-mail.

journal de messagerie système

Stocke les informations de service relatives à l'envoi de messages électroniques.

compte sysmail_profile

Stocke les informations relatives aux profils utilisateurs et aux comptes de messagerie.

Vues qui émulent le courrier de base de données SQL du serveur dans Postgre SQL

Pour émuler SQL Server Database Mail, AWS SCT créez les vues suivantes dans la SQL base de données Postgre afin de garantir la compatibilité. Le pack d'extension ne les utilise pas, mais votre code converti peut interroger ces vues.

sysmail_allitems

Inclut une liste de tous les e-mails.

sysmail_faileditems

Inclut une liste des e-mails qui n'ont pas pu être envoyés.

sysmail_sentitems

Inclut une liste des e-mails envoyés.

sysmail_unsentitems

Inclut une liste d'e-mails qui n'ont pas encore été envoyés.

sysmail_mailattachments

Inclut une liste des fichiers joints.

Procédures qui émulent le courrier de base de données SQL du serveur dans Postgre SQL

Pour émuler SQL Server Database Mail, le pack d'extension utilise les procédures suivantes :

sp_send_dbmail

Envoie un e-mail aux destinataires spécifiés.

sysmail_add_profile_sp

Crée un nouveau profil utilisateur.

sysmail_add_account_sp

Crée un nouveau compte de messagerie qui stocke des informations telles que les informations d'identification du protocole Simple Mail Transfer Protocol (SMTP), etc.

sysmail_add_profileaccount_sp

Ajoute un compte e-mail au profil utilisateur spécifié.

sysmail_update_profile_sp

Modifie les attributs du profil utilisateur tels que la description, le nom, etc.

sysmail_update_account_sp

Modifie les informations du compte de messagerie existant.

sysmail_update_profileaccount_sp

Met à jour les informations du compte e-mail dans le profil utilisateur spécifié.

sysmail_delete_profileaccount_sp

Supprime un compte e-mail du profil utilisateur spécifié.

sysmail_delete_account_sp

Supprime le compte e-mail.

sysmail_delete_profile_sp

Supprime le profil utilisateur.

sysmail_delete_mailitems_sp

Supprime les e-mails des tables internes.

sysmail_help_profile_sp

Affiche des informations sur le profil utilisateur.

sysmail_help_account_sp

Affiche les informations relatives au compte de messagerie.

sysmail_help_profileaccount_sp

Affiche des informations sur les comptes de messagerie associés au profil utilisateur.

sysmail_dbmail_json

Procédure interne qui génère des JSON demandes de AWS Lambda fonctions.

sysmail_verify_profile_sp, sysmail_verify_account_sp, sysmail_verify_addressparams_sp

Procédures internes qui vérifient les paramètres.

sp_get_dbmail, sp_set_dbmail, sysmail_dbmail_xml

Procédures internes déconseillées.

Syntaxe des procédures qui émulent le courrier de base de données SQL du serveur dans Postgre SQL

La aws_sqlserver_ext.sp_send_dbmail procédure du pack d'extension émule la msdb.dbo.sp_send_dbmail procédure. Pour plus d'informations sur la procédure de messagerie de la base de données SQL du serveur source, consultez la documentation technique 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

La aws_sqlserver_ext.sysmail_delete_mailitems_sp procédure du pack d'extension émule la msdb.dbo.sysmail_delete_mailitems_sp procédure. Pour plus d'informations sur la procédure de messagerie de la base de données SQL du serveur source, consultez la documentation technique Microsoft.

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

La aws_sqlserver_ext.sysmail_add_profile_sp procédure du pack d'extension émule la msdb.dbo.sysmail_add_profile_sp procédure. Pour plus d'informations sur la procédure de messagerie de la base de données SQL du serveur source, consultez la documentation technique Microsoft.

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

La aws_sqlserver_ext.sysmail_add_account_sp procédure du pack d'extension émule la msdb.dbo.sysmail_add_account_sp procédure. Pour plus d'informations sur la procédure de messagerie de la base de données SQL du serveur source, consultez la documentation technique 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

La aws_sqlserver_ext.sysmail_add_profileaccount_sp procédure du pack d'extension émule la msdb.dbo.sysmail_add_profileaccount_sp procédure. Pour plus d'informations sur la procédure de messagerie de la base de données SQL du serveur source, consultez la documentation technique 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

La aws_sqlserver_ext.sysmail_help_profile_sp procédure du pack d'extension émule la msdb.dbo.sysmail_help_profile_sp procédure. Pour plus d'informations sur la procédure de messagerie de la base de données SQL du serveur source, consultez la documentation technique Microsoft.

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

La aws_sqlserver_ext.sysmail_update_profile_sp procédure du pack d'extension émule la msdb.dbo.sysmail_update_profile_sp procédure. Pour plus d'informations sur la procédure de messagerie de la base de données SQL du serveur source, consultez la documentation technique Microsoft.

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

La aws_sqlserver_ext.sysmail_delete_profile_sp procédure du pack d'extension émule la msdb.dbo.sysmail_delete_profile_sp procédure. Pour plus d'informations sur la procédure de messagerie de la base de données SQL du serveur source, consultez la documentation technique Microsoft.

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

La aws_sqlserver_ext.sysmail_help_account_sp procédure du pack d'extension émule la msdb.dbo.sysmail_help_account_sp procédure. Pour plus d'informations sur la procédure de messagerie de la base de données SQL du serveur source, consultez la documentation technique Microsoft.

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

La aws_sqlserver_ext.sysmail_update_account_sp procédure du pack d'extension émule la msdb.dbo.sysmail_update_account_sp procédure. Pour plus d'informations sur la procédure de messagerie de la base de données SQL du serveur source, consultez la documentation technique 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

La aws_sqlserver_ext.sysmail_delete_account_sp procédure du pack d'extension émule la msdb.dbo.sysmail_delete_account_sp procédure. Pour plus d'informations sur la procédure de messagerie de la base de données SQL du serveur source, consultez la documentation technique Microsoft.

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

La aws_sqlserver_ext.sysmail_help_profileaccount_sp procédure du pack d'extension émule la msdb.dbo.sysmail_help_profileaccount_sp procédure. Pour plus d'informations sur la procédure de messagerie de la base de données SQL du serveur source, consultez la documentation technique 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

La aws_sqlserver_ext.sysmail_update_profileaccount_sp procédure du pack d'extension émule la msdb.dbo.sysmail_update_profileaccount_sp procédure. Pour plus d'informations sur la procédure de messagerie de la base de données SQL du serveur source, consultez la documentation technique 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

La aws_sqlserver_ext.sysmail_delete_profileaccount_sp procédure du pack d'extension émule la msdb.dbo.sysmail_delete_profileaccount_sp procédure. Pour plus d'informations sur la procédure de messagerie de la base de données SQL du serveur source, consultez la documentation technique 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

Exemples d'utilisation de procédures qui émulent le courrier de base de données SQL du serveur dans Postgre SQL

Pour envoyer un e-mail, suivez la aws_sqlserver_ext.sp_send_dbmail procédure ci-dessous.

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

L'exemple suivant montre comment envoyer un e-mail contenant les résultats d'une requête.

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

L'exemple suivant montre comment envoyer un e-mail avec HTML du code.

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

Pour supprimer des e-mails, suivez la aws_sqlserver_ext.sysmail_delete_mailitems_sp procédure ci-dessous.

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

L'exemple suivant montre comment supprimer les e-mails les plus anciens.

PERFORM sysmail_delete_mailitems_sp ( par_sent_before := '31.12.2015' );

L'exemple suivant montre comment supprimer tous les e-mails qui ne peuvent pas être envoyés.

PERFORM sysmail_delete_mailitems_sp ( par_sent_status := 'failed' );

Pour créer un nouveau profil utilisateur, suivez la aws_sqlserver_ext.sysmail_add_profile_sp procédure décrite ci-dessous.

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

L'exemple suivant montre comment créer un nouveau profil et enregistrer l'identifiant de profil unique dans une variable.

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;

Pour créer un nouveau compte de messagerie, suivez la aws_sqlserver_ext.sysmail_add_account_sp procédure ci-dessous.

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

Pour ajouter un compte e-mail au profil utilisateur, suivez la aws_sqlserver_ext.sysmail_add_profileaccount_sp procédure ci-dessous.

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

Exemples de cas d'utilisation pour émuler le courrier de base de données SQL du serveur dans Postgre SQL

Si le code de votre base de données source utilise SQL Server Database Mail pour envoyer des e-mails, vous pouvez utiliser le pack d' AWS SCT extension pour convertir ce code en PostgreSQL.

Pour envoyer un e-mail depuis votre base de données Postgre SQL
  1. Créez et configurez votre AWS Lambda fonction.

  2. Appliquez le pack d' AWS SCT extension.

  3. Créez un profil utilisateur à l'aide de la sysmail_add_profile_sp fonction illustrée ci-dessous.

  4. Créez un compte e-mail à l'aide de la sysmail_add_account_sp fonction illustrée ci-dessous.

  5. Ajoutez ce compte e-mail à votre profil utilisateur à l'aide de la sysmail_add_profileaccount_sp fonction illustrée ci-dessous.

    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. Envoyez un e-mail à l'aide de la sp_send_dbmail fonction illustrée ci-dessous.

    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;

Pour consulter les informations relatives à tous les profils utilisateur, suivez la sysmail_help_profile_sp procédure décrite ci-dessous.

SELECT FROM aws_sqlserver_ext.sysmail_help_profile_sp();

L'exemple suivant affiche les informations relatives au profil utilisateur spécifique.

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

Pour consulter les informations relatives à tous les comptes de messagerie, suivez la sysmail_help_account_sp procédure ci-dessous.

select from aws_sqlserver_ext.sysmail_help_account_sp();

L'exemple suivant affiche les informations relatives au compte de messagerie spécifique.

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

Pour consulter les informations relatives à tous les comptes de messagerie associés aux profils utilisateur, suivez la sysmail_help_profileaccount_sp procédure décrite ci-dessous.

select from aws_sqlserver_ext.sysmail_help_profileaccount_sp();

L'exemple suivant filtre les enregistrements par identifiant, nom de profil ou nom de compte.

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

Pour modifier le nom ou la description du profil utilisateur, suivez la sysmail_update_profile_sp procédure ci-dessous.

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

Pour modifier les paramètres du compte e-mail, suivez la ysmail_update_account_sp procédure ci-dessous.

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