SQL Server nous offre la possibilité d'envoyer des emails via sa solution Database Mail. Cela inclut un tas de procédures stockées qui facilitent la configuration et l'envoi d'e-mails.
Pour envoyer un e-mail, utilisez le sp_send_dbmail
procédure stockée. Cette procédure accepte un tas d'arguments optionnels, dont l'un vous permet d'envoyer des pièces jointes.
En fait, il y a deux arguments qui vous permettent d'envoyer des pièces jointes. Celui que vous utiliserez dépendra du contexte.
Ce sont :
@file_attachments
– Vous permet de spécifier un fichier à joindre à l'e-mail.@attach_query_result_as_file
– Ceci n'est applicable que si vous utilisez également@query
pour envoyer par e-mail les résultats d'une requête.
Exemples ci-dessous.
Joindre un fichier
Le @file_attachments
L'argument vous permet de spécifier un fichier à joindre à l'e-mail.
Voici un exemple :
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DB Admin Profile',
@recipients = '[email protected]',
@body = 'The attached file contains all required data.',
@file_attachments = '/var/opt/mssql/bak/Nature.bak',
@subject = 'File attached as discussed';
La valeur doit inclure le chemin absolu vers le fichier.
Par défaut, la taille de fichier maximale est de 1 Mo par fichier, mais vous pouvez modifier cela avec le sysmail_configure_sp
procédure stockée.
Joindre plusieurs fichiers
Vous pouvez joindre plusieurs fichiers en séparant chaque nom de fichier par un point-virgule :
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DB Admin Profile',
@recipients = '[email protected]',
@body = 'The attached files contain all required data.',
@file_attachments = '/var/opt/mssql/bak/Nature.bak;/var/opt/mssql/bak/World.bak',
@subject = 'Files attached as discussed';
Comme mentionné, la limite de taille de fichier s'applique à chaque fichier. Ainsi, si la limite de taille de fichier est de 1 Mo, chaque fichier de cet exemple peut peser jusqu'à 1 Mo (ce qui donne une taille totale de 2 Mo pour les deux pièces jointes combinées).
Joindre les résultats d'une requête
Vous pouvez également utiliser la messagerie de base de données pour envoyer par e-mail le résultat d'une requête. Cela se fait avec le @query
argument. Par défaut, les résultats sont répertoriés dans le corps de l'e-mail, mais vous pouvez les ajouter en pièce jointe si vous préférez.
Pour les ajouter en pièce jointe, définissez le @attach_query_result_as_file
argument avec une valeur de 1
.
Voici un exemple d'envoi de résultats de requête en pièce jointe :
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';
De nombreuses options s'offrent à vous lorsque vous envoyez les résultats d'une requête par e-mail.
Par exemple, vous pouvez utiliser @query_attachment_filename
pour spécifier le nom du fichier (s'il n'est pas spécifié, Database Mail en créera un). Vous pouvez également utiliser le @query_result_header
argument pour spécifier si les en-têtes sont inclus ou non dans la requête, et vous pouvez utiliser le @query_result_no_padding
argument pour supprimer tout rembourrage appliqué automatiquement aux résultats.