0

这有效:

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 行无法打开附件文件“UNCpathway\experimental attachment.xlsx”。执行 API 'CreateFile' 失败,错误号为 32。

该消息很奇怪,因为我没有要求打开附件!为什么?如何允许使用这些附件?

4

3 回答 3

1

“打开”的意思是“由邮件程序访问,以便可以将存储在文件中的字节复制到电子邮件中”,而不是将文件呈现给用户。

CreateFile通常用于为这种访问打开文件。

错误代码 32 是ERROR_SHARING_VIOLATION
所以邮件程序无法读取附件文件,因为其他东西正在读取它。

于 2012-11-15T13:34:41.840 回答
1

转到 SQL Server 并单击 SQL Server 属性,然后转到构面并选择表面区域配置并将 sqlmailEnabled 更改为启用/真。

并立即尝试。它会正常工作。

或执行脚本:-

sp_configure '显示高级选项', 1;

重新配置;
GO
sp_configure '数据库邮件 XPs', 1;

重新配置

于 2017-10-12T06:24:18.280 回答
0

正如 GSerg 提到的,它与共享违规有关。可以通过设置重试次数和重试间隔时间来避免。我摆脱了 2 次重试和 2 分钟的间隔。

于 2017-02-03T14:10:38.070 回答