使用sp_send_dbmail发送xlsx文件

时间:2012-11-15 12:55:56

标签: sql-server sql-server-2008-r2

这有效:

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。

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

3 个答案:

答案 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分钟的间隔。