Dans SQL Server, vous pouvez envoyer des e-mails en utilisant le sp_send_dbmail
procédure stockée dans msdb base de données.
L'un des choix que vous avez lors de l'exécution de cette procédure est d'inclure ou non les résultats d'une requête.
Vous avez également le choix d'envoyer ou non ces résultats en pièce jointe.
Exemple
Pour envoyer les résultats d'une requête par e-mail, utilisez le @query
arguments.
Pour joindre ces résultats en pièce jointe, utilisez le @attach_query_result_as_file
argument. Ceci accepte un bit valeur, la valeur par défaut étant 0
(pour aucune pièce jointe).
Pour envoyer les résultats en pièce jointe, il suffit de fournir un 1
pour cet argument.
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DB Admin Profile',
@recipients = '[email protected]',
@body = 'Potential candidates for an Admin job, perhaps?',
@query = 'SELECT TOP(5) * FROM Artists;',
@execute_query_database = 'Music',
@attach_query_result_as_file = 1,
@subject = 'Query results as discussed';
Cet exemple envoie un e-mail avec les résultats en pièce jointe au format .txt dossier. Le nom a été généré automatiquement par Database Mail.
Par défaut, la taille de fichier maximale pour les pièces jointes est de 1 Mo par fichier, mais vous pouvez modifier cela avec le sysmail_configure_sp
procédure stockée.
Fournir un nom pour la pièce jointe
Vous avez également la possibilité de fournir votre propre nom pour la pièce jointe. Vous pouvez le faire avec le @query_attachment_filename
argument.
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DB Admin Profile',
@recipients = '[email protected]',
@body = 'Potential candidates for an Admin job, perhaps?',
@query = 'SELECT TOP(5) * FROM Artists;',
@execute_query_database = 'Music',
@attach_query_result_as_file = 1,
@query_attachment_filename = 'Artists.csv',
@subject = 'Query results as discussed';
Plus d'options
Voici un autre exemple qui développe le précédent. Ici, j'ai inclus un certain nombre d'options qui pourraient vous être utiles lors de l'envoi de résultats de requête sous forme de pièce jointe à un e-mail.
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DB Admin Profile',
@recipients = '[email protected]',
@body = 'Potential candidates for an Admin job, perhaps?',
@query = 'SELECT TOP(5) * FROM Artists;',
@execute_query_database = 'Music',
@attach_query_result_as_file = 1,
@query_attachment_filename = 'Artists.csv',
@query_result_header = 1,
@query_result_width = 256,
@query_result_separator = ',',
@exclude_query_output = 1,
@append_query_error = 1,
@query_no_truncate = 0,
@query_result_no_padding = 1,
@subject = 'Query results as discussed';
Certains d'entre eux sont définis sur leur valeur par défaut et d'autres non. Par exemple, j'ai changé @query_result_no_padding
à 1
afin de supprimer le rembourrage à l'intérieur des colonnes. J'ai également utilisé @query_result_separator
pour remplacer l'espace par défaut par le séparateur par une virgule.
Le sp_send_dbmail
procédure accepte plus d'arguments que ceux que j'ai énumérés ici. Consultez la documentation de Microsoft pour une liste complète des arguments et leurs descriptions.
Configuration de la messagerie de base de données
Les exemples de cette page supposent que vous avez déjà activé et configuré la messagerie de base de données.
Si vous n'avez pas configuré la messagerie de base de données, consultez Comment envoyer un e-mail à partir de SQL Server. Cet article fournit des exemples d'activation et de configuration de la messagerie de base de données avec T-SQL.