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

Cómo enviar por correo electrónico los resultados de la consulta como un archivo adjunto en SQL Server (T-SQL)

En SQL Server, puede enviar correos electrónicos usando el sp_send_dbmail procedimiento almacenado en msdb base de datos.

Una de las opciones que tiene al ejecutar este procedimiento es incluir o no los resultados de una consulta.

Otra opción que tiene es enviar o no esos resultados en un archivo adjunto.

Ejemplo

Para enviar por correo electrónico los resultados de una consulta, use @query argumento.

Para adjuntar esos resultados como un archivo adjunto, use el @attach_query_result_as_file argumento. Esto es acepta un poco valor, siendo el valor predeterminado 0 (sin archivos adjuntos).

Para enviar los resultados en un archivo adjunto, simplemente proporcione un 1 para este argumento.

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

Este ejemplo envía un correo electrónico con los resultados adjuntos como .txt expediente. El nombre fue generado automáticamente por Database Mail.

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

Proporcione un nombre para el archivo adjunto

También tiene la opción de proporcionar su propio nombre para el archivo adjunto. Puede hacer esto con @query_attachment_filename argumento.

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

Más opciones

Aquí hay otro ejemplo que amplía el anterior. Aquí, he incluido una serie de opciones que pueden resultarle útiles al enviar los resultados de la consulta como un archivo adjunto de correo electrónico.

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

Algunos de estos están configurados en su valor predeterminado y otros no. Por ejemplo, he cambiado @query_result_no_padding a 1 para eliminar el relleno dentro de las columnas. También he usado @query_result_separator para cambiar el separador del espacio predeterminado a una coma.

El sp_send_dbmail El procedimiento acepta más argumentos de los que he enumerado aquí. Consulte la documentación de Microsoft para obtener una lista completa de argumentos y sus descripciones.

Configuración del correo electrónico de la base de datos

Los ejemplos en esta página asumen que ya ha habilitado y configurado el Correo electrónico de base de datos.

Si no tiene configurado el Correo electrónico de base de datos, consulte Cómo enviar correo electrónico desde SQL Server. Ese artículo proporciona ejemplos para habilitar y configurar el correo electrónico de la base de datos con T-SQL.