Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment envoyer par e-mail les résultats d'une requête en pièce jointe dans SQL Server (T-SQL)

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.