2017-06-02 1 views
0

Je souhaite attacher plusieurs fichiers dans sp_send dbmail mais le nom de fichier et le chemin sont variables au fur et à mesure qu'ils changent. Voici mon script SQl. Après avoir exécuté le script ci-dessous, je ne reçois qu'un seul fichier en pièce jointe, mais il y a plusieurs fichiers qui commencent par ERR comme nom.Joindre plusieurs fichiers dans sp_send_dbmail en utilisant le chemin et le nom de fichier comme variable

Quelqu'un peut-il m'aider s'il vous plaît ici?

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\'[email protected]+ ' /b''' 

insert into @files exec (@folderpath) 

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

set @filepath = 'E:\Batch\Error_Logs\'[email protected]+'\'[email protected] 

EXEC msdb.dbo.sp_send_dbmail 
@profile_name = 'DB_Mail' 
, @recipients = '[email protected]' 
, @subject = 'sub' 
, @body = 'pfa' 
, @file_attachments = @filepath; 

Répondre

1

Selon la documentation Microsoft sur sp_send_mail, vous pouvez le faire avec la délimitation (séparation) avec des points-virgules (;).

[@ file_attachments =] 'file_attachments' est une liste des noms de fichier délimité par des points-virgules pour joindre au message électronique. Les fichiers de la liste doivent être spécifiés en tant que chemins absolus. La liste des pièces jointes est de type nvarchar (max). Par défaut, Database Mail limite les pièces jointes à 1 Mo par fichier.

Vous pouvez essayer de concaténer tous les noms de fichiers avec des points-virgules.