使用path和filename作为变量在sp_send_dbmail中附加多个文件

时间:2017-06-02 10:52:12

标签: sql-server email-attachments

我想在sp_send dbmail中附加多个文件,但文件名和路径在变化时是可变的。下面是我的SQl脚本。在脚本下面运行后,我只收到一个邮件作为附件,但有多个文件以ERR作为名称开头。

有人可以帮我吗?

declare @files table (Filename varchar(1000))
declare @filename varchar(500)
declare @foldername varchar(1000) = REPLACE(CONVERT(varchar(10), GETDATE()-1, 112), '/', '')
declare @folderpath varchar(500)
declare @filepath varchar(1000)

set @folderpath = 'xp_cmdshell ''dir E:\Batch\Error_Logs\'+@foldername+ ' /b'''

insert into @files exec (@folderpath)

SELECT @filename = Filename from @files where Filename like 'ERR_%'

set @filepath = 'E:\Batch\Error_Logs\'+@foldername+'\'+@filename

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DB_Mail'
, @recipients = 'person@example.com'
, @subject = 'sub'
, @body = 'pfa'
, @file_attachments = @filepath;

1 个答案:

答案 0 :(得分:1)

根据Microsoft sp_send_mail上的文档,您可以使用半冒号(;)分隔(分隔)它。

  

[@ file_attachments =]' file_attachments'是分号分隔的   要附加到电子邮件的文件名列表。列表中的文件   必须指定为绝对路径。附件列表是类型   为nvarchar(最大)。默认情况下,数据库邮件将文件附件限制为1   每个文件的MB。

您可以尝试使用半冒号连接所有文件名。