这有效:
EXEC msdb..sp_send_dbmail
@recipients = 'myaddress@helloworld.co.uk',
@subject = 'HELLO WORLD',
@Importance = 'LOW',
@body = 'HELLO WORLD',
@file_attachments = N'UNCpathway\experimental attachment.txt'
然而,当我尝试这个时
EXEC msdb..sp_send_dbmail
@recipients = 'myaddress@helloworld.co.uk',
@subject = 'HELLO WORLD',
@Importance = 'LOW',
@body = 'HELLO WORLD',
@file_attachments = N'UNCpathway\experimental attachment.xlsx'
我收到以下错误消息:
消息22051,级别16,状态1,行0无法打开附件文件 'UNC Pathway \ experimental attachment.xlsx'。 执行API'CreateFile'失败,错误号为32。
这条消息很奇怪,因为我没有要求附件被打开! 为什么? 如何使用这些附件?
答案 0 :(得分:1)
“已打开”表示“由邮件程序访问,以便存储在文件中的字节可以复制到电子邮件中”,而不是将文件呈现给用户。
CreateFile
通常用于打开此类访问的文件。
错误代码32为ERROR_SHARING_VIOLATION
因此,邮件程序无法读取附件文件,因为其他内容正在阅读它。
答案 1 :(得分:1)
转到SQL Server并r.click on SQL server properties并转到facets并选择表面区域配置并将sqlmailEnabled更改为enable / true。
立即尝试。它会正常工作。
或执行脚本: -
sp_configure'show advanced options',1;
GO
RECONFIGURE;
GO
sp_configure'Database Mail XPs',1;
GO
RECONFIGURE
GO
答案 2 :(得分:0)
正如GSerg所说,它与共享违规有关。 可以通过设置重试尝试和重试间隔持续时间来避免。 我摆脱了2次重试和2分钟的间隔。