sql >> Base de Datos >  >> RDS >> Sqlserver

Enviar correos electrónicos con archivos adjuntos en SQL Server (T-SQL)

SQL Server nos brinda la capacidad de enviar correos electrónicos a través de su solución de correo de base de datos. Esto incluye un montón de procedimientos almacenados que facilitan la configuración y el envío de correos electrónicos.

Para enviar un correo electrónico, use el sp_send_dbmail procedimiento almacenado. Este procedimiento acepta un montón de argumentos opcionales, uno de los cuales le permite enviar archivos adjuntos.

En realidad, hay dos argumentos que le permiten enviar archivos adjuntos. El que uses dependerá del contexto.

Ellos son:

  • @file_attachments – Le permite especificar un archivo para adjuntar al correo electrónico.
  • @attach_query_result_as_file – Esto solo es aplicable si también está utilizando @query para enviar por correo electrónico los resultados de una consulta.

Ejemplos a continuación.

Adjuntar un archivo

El @file_attachments El argumento le permite especificar un archivo para adjuntarlo al correo electrónico.

He aquí un ejemplo:

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

El valor debe incluir la ruta absoluta al archivo.

De forma predeterminada, el tamaño máximo de archivo es de 1 MB por archivo, pero puede cambiarlo con sysmail_configure_sp procedimiento almacenado.

Adjuntar varios archivos

Puede adjuntar varios archivos separando cada nombre de archivo con un punto y coma:

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

Como se mencionó, el límite de tamaño de archivo se aplica a cada archivo. Entonces, si el límite de tamaño del archivo es de 1 MB, cada archivo en este ejemplo puede tener hasta 1 MB (lo que da como resultado un tamaño total de 2 MB para ambos archivos adjuntos combinados).

Adjuntar resultados de una consulta

También puede utilizar el Correo electrónico de base de datos para enviar por correo electrónico el resultado de una consulta. Esto se hace con @query argumento. De forma predeterminada, los resultados se enumeran en el cuerpo del correo electrónico, pero puede agregarlos como archivo adjunto si lo prefiere.

Para agregarlos como un archivo adjunto, configure el @attach_query_result_as_file argumento con un valor de 1 .

Este es un ejemplo de cómo enviar los resultados de una consulta como archivo adjunto:

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

Hay bastantes opciones disponibles para usted al enviar los resultados de la consulta en un correo electrónico.

Por ejemplo, puede usar @query_attachment_filename para especificar el nombre del archivo (si no se especifica, el Correo electrónico de la base de datos creará uno). También puede usar el @query_result_header argumento para especificar si los encabezados se incluyen o no en la consulta, y puede usar el @query_result_no_padding argumento para eliminar cualquier relleno que se aplique automáticamente a los resultados.