如何解决msdb dbo sp send dbmail SQL服务器中的文件附件

我需要通过连接msdb.dbo.sp_send_dbmail附加远程桌面文件

我在SQL服务器中得到一个错误,如下所示

附件文件\ example.com \ E $ \ Attachments \ test.txt无效。

但是,如果我在运行命令中input这个,它会正确打开文件,如果我设置本地文件path,它可以正常工作,没有任何错误。

什么可能是这个问题的根源呢?

下面是我的SQL查询。

SET @v_recipients = 'email@example.com' SET @v_copy_recipients = 'email2@example3.com' SET @v_body = 'test mail' SET @v_subject = 'Test mail' SET @v_email_template_id = 1 SET @v_queue_id = 1 SET @v_attachments = N'\\example.com\E$\Attachments\test.txt' set @p_database_profile_name='profile_name' EXEC msdb.dbo.sp_send_dbmail @recipients = @v_recipients, @copy_recipients = @v_copy_recipients, @body = @v_body, @subject = @v_subject, @file_attachments= @v_attachments, @profile_name = @p_database_profile_name, @body_format = 'HTML' ; 

附件在安全上下文(操作系统和SQL服务器)方面有一定的限制 – 可能是sp_send_dbmail文档的注释部分可能会给你一个线索:

…数据库邮件使用当前用户的Microsoft Windows安全上下文来控制对文件的访问。 因此,使用SQL server身份验证进行身份验证的用户无法使用@file_attachments附加文件。 Windows不允许SQL server从远程计算机向另一台远程计算机提供凭据。 因此,如果从运行SQL server的计算机以外的计算机运行命令,数据库邮件可能无法附加网络共享中的文件…