我有一个脚本可以将文件作为附件提取到电子邮件中并将其发送出去。它最近停止了工作。 我提取的文件名为“DTH201509240918.xlsx”,最后4个数字是随机的,所以我使用'^。* $'。这些文件位于源文件夹中,但我总是“找不到文件”。 任何帮助将不胜感激为什么文件没有拉。
ALTER Procedure [dbo].[DSEmail] as begin
declare @to varchar(1000)
,@sub varchar(1000)
,@subdate varchar(10) = CONVERT(Varchar(10),GETDATE(),101)
,@bod varchar(1000)
,@filePath varchar(1000) = '\\source\'
,@fileDate varchar (8) = CONVERT(Varchar(8),GETDATE(),112)
,@attachments varchar(1000)
,@pathAndFile varchar (1000)
Set @attachments = 'DTH' + @fileDate + '^.*$'
Set @pathAndFile = @filePath + @attachments
Set @sub = 'dS Report ' + @subdate
Set @bod = '\\source\' + @attachments
Set @to = 'email@email.com'
IF dbo.fn_FileExists(@pathAndFile) = 1
exec msdb.dbo.sp_send_dbmail
@recipients = @to
,@subject = @sub
,@body = @bod
,@file_attachments = @pathAndFile
ELSE
exec msdb.dbo.sp_send_dbmail
@recipients = @to
,@subject = 'DS Error'
,@body = 'No file was found. Please check \\source\ for today''s file.'
End
答案 0 :(得分:0)
您不能将{regex与master.dbo.fn_FileExists
一起使用。以下内容应该能够为您提供可以附加到电子邮件中的确切文件名:
declare @dir table
(
ID int identity(1, 1)
primary key
not null,
dirEntry nvarchar(max)
);
insert into @dir
(dirEntry)
exec xp_cmdshell 'dir ' + @filePath + N'*.*';
select d.dirEntry
from @dir as d
where d.dirEntry like N'DTH' + @fileDate + '%.xlsx'
之后,您可以调整上述代码,以包含您希望附加到电子邮件中的完全文件名。