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

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

SQL Server offre un moyen simple d'envoyer par e-mail les résultats d'une requête à vous-même (ou à quelqu'un d'autre).

Pour envoyer un e-mail avec T-SQL, vous devez utiliser le sp_send_dbmail procédure stockée dans msdb base de données. Cette procédure accepte de nombreux arguments, dont l'un est le @query argument. C'est l'argument qui attache les résultats de votre requête à l'e-mail.

Exemple

Voici un exemple basique qui utilise un minimum d'arguments :

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',
    @subject = 'Query results as discussed';

Par défaut, les résultats de la requête sont répertoriés dans le corps de l'e-mail. Vous pouvez également envoyer les résultats en pièce jointe.

Supprimer le rembourrage

Si vos résultats sont formatés avec trop de rembourrage dans les colonnes, vous pouvez utiliser @query_result_no_padding = 1 pour éliminer ce rembourrage.

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',
    @query_result_no_padding = 1,
    @subject = 'Query results as discussed';

Ajouter les résultats de la requête en pièce jointe

Vous pouvez utiliser le @attach_query_result_as_file argument pour ajouter les résultats de la requête en pièce jointe. 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,
    @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';

Dans cet exemple, j'ai ajouté quelques arguments supplémentaires.

Le @query_attachment_filename vous permet de spécifier votre propre nom de fichier (si vous ne fournissez pas cet argument, Database Mail en créera un).

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 T-SQL pour activer et configurer la messagerie de base de données. Cela ne prend pas longtemps.