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

Cómo enviar por correo electrónico los resultados de una consulta en SQL Server (T-SQL)

SQL Server proporciona una manera fácil de enviar por correo electrónico los resultados de una consulta a usted mismo (oa otra persona).

Para enviar correo electrónico con T-SQL, debe usar el sp_send_dbmail procedimiento almacenado en msdb base de datos. Este procedimiento acepta muchos argumentos, uno de los cuales es @query argumento. Ese es el argumento que adjunta los resultados de su consulta al correo electrónico.

Ejemplo

Aquí hay un ejemplo básico que usa un mínimo de argumentos:

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

De forma predeterminada, los resultados de la consulta se enumeran en el cuerpo del correo electrónico. También puede hacer que los resultados se envíen como un archivo adjunto.

Quitar relleno

Si sus resultados tienen demasiado relleno dentro de las columnas, puede usar @query_result_no_padding = 1 para eliminar este relleno.

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

Agregar resultados de consulta como archivo adjunto

Puede usar el @attach_query_result_as_file argumento para agregar los resultados de la consulta como datos adjuntos. 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,
    @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';

En este ejemplo he añadido algunos argumentos más.

El @query_attachment_filename El argumento le permite especificar su propio nombre de archivo (si no proporciona este argumento, Database Mail inventará uno).

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 de T-SQL para habilitar y configurar el correo electrónico de la base de datos. No lleva mucho tiempo.