我有以下代码:
DECLARE
@ATTACH_FILE nvarchar (max),
@SQL varchar (max);
/* ============================================================== */
-- add files to attach
SET @ATTACH_FILE = N'\\C:\attach\file.txt';
SET @SQL = 'exec msdb.dbo.sp_send_dbmail
@profile_name = ''ProfileMail'',
@recipients = ''my@mail.ru'',
@reply_to = ''my@mail.ru'',
@subject = ''subject mail'',
@body = ''body mail'',
@file_attachments='' '+ @ATTACH_FILE +' '' ';
-- send mail
EXEC(@SQL);
UPD 删除两个斜杠SET @ATTACH_FILE = N'C:\ attach \ file.txt'; - 错误仍然存在
我收到错误:文件附件无效\ C:\ attach \ file.txt(文件位于sql server上)。
我不明白问题是什么。
答案 0 :(得分:1)
附件地址中的错误大约是'//'
和extra space
。
现在可以使用。
declare @attach_file nvarchar(100),@sql varchar(max)
SET @ATTACH_FILE = N'C:\attach\file.txt';
SET @SQL = 'exec msdb.dbo.sp_send_dbmail
@profile_name = ''ProfileMail'',
@recipients = ''my@mail.ru'',
@reply_to = ''my@mail.ru'',
@subject = ''subject mail'',
@body = ''body mail'',
@file_attachments='+char(39)+@ATTACH_FILE+char(39);
-- send mail
Exec(@sql)
答案 1 :(得分:0)
替换此
SET @ATTACH_FILE = N'\\C:\attach\file.txt';
用这个
SET @ATTACH_FILE = N'C:\attach\file.txt';
答案 2 :(得分:0)
正如您指定的那样,该文件位于Sql server中。使用以下查询找出该文件的确切地址。
SELECT name, physical_name AS current_file_location
FROM sys.master_files
并使用邮件附件中的地址。