O SQL Server nos oferece a capacidade de enviar e-mails por meio de sua solução Database Mail. Isso inclui vários procedimentos armazenados que facilitam a configuração e o envio de e-mails.
Para enviar um e-mail, use o
sp_send_dbmail
procedimento armazenado. Este procedimento aceita vários argumentos opcionais, um dos quais permite enviar anexos. Na verdade, existem dois argumentos que permitem enviar anexos. O que você usar dependerá do contexto.
Eles estão:
@file_attachments
– Permite especificar um arquivo para anexar ao e-mail.@attach_query_result_as_file
– Isso só é aplicável se você também estiver usando@query
para enviar por e-mail os resultados de uma consulta.
Exemplos abaixo.
Anexar um arquivo
Os
@file_attachments
O argumento permite que você especifique um arquivo para anexar ao e-mail. Aqui está um exemplo:
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';
O valor deve incluir o caminho absoluto para o arquivo.
Por padrão, o tamanho máximo do arquivo é de 1 MB por arquivo, mas você pode alterar isso com o
sysmail_configure_sp
procedimento armazenado. Anexar vários arquivos
Você pode anexar vários arquivos separando cada nome de arquivo com um ponto e vírgula:
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';
Conforme mencionado, o limite de tamanho de arquivo se aplica a cada arquivo. Portanto, se o limite de tamanho do arquivo for 1 MB, cada arquivo neste exemplo pode ter até 1 MB (resultando em um tamanho total de 2 MB para ambos os anexos combinados).
Anexar resultados de uma consulta
Você também pode usar o Database Mail para enviar por email o resultado de uma consulta. Isso é feito com o
@query
argumento. Por padrão, os resultados são listados no corpo do e-mail, mas você pode adicioná-los como anexo, se preferir. Para adicioná-los como um anexo, defina o
@attach_query_result_as_file
argumento com um valor de 1
. Aqui está um exemplo de envio de resultados de consulta como um anexo:
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';
Existem algumas opções disponíveis para você enviar os resultados da consulta em um e-mail.
Por exemplo, você pode usar
@query_attachment_filename
para especificar o nome do arquivo (se não for especificado, o Database Mail criará um). Você também pode usar o @query_result_header
argumento para especificar se os cabeçalhos estão ou não incluídos na consulta, e você pode usar o @query_result_no_padding
argumento para remover qualquer preenchimento aplicado automaticamente aos resultados.