【发布时间】:2020-07-29 18:14:40
【问题描述】:
(Sql Server 2014, Windows Server) 在本地共享服务器上运行包含附件的数据库邮件存储过程时遇到了令人沮丧的问题。
EXEC msdb.dbo.sp_send_dbmail
...
,@file_attachments = '\\localServer\subfolder\file.txt
不幸的是,执行此操作时出现错误:
Attachment file \\localServer\subfolder\file.txt is invalid.
在线搜索,似乎常见的原因是 SQL 服务帐户(或服务器代理?这不清楚)没有指定文件系统的权限。但是,这里不应该是这种情况。分配给 SQL 服务帐户的域帐户可以查看和修改所有尝试附加的文件。
通过 SQL 配置管理器,SQL Server 和 SQL Server 代理 服务都提供了可以访问此服务器的域管理员用户帐户。但是,问题仍然存在。这些服务已重新启动。
另一个复杂的问题是从同一服务器启动另一个附件,例如:
EXEC msdb.dbo.sp_send_dbmail
...
,@file_attachments = '\\localServer\another_subfolder\file.txt
完全按预期工作,并成功发送了带有附件的邮件。此文件夹/文件的权限与附件失败的文件夹/文件的权限相同。
可能是什么原因造成的,是否需要对 SQL 服务进行任何进一步的更改?
【问题讨论】:
-
“这里不应该这样”是什么意思?正在使用什么帐户来运行 SQL Server 和 SQL Server 代理?您是否以该帐户 登录服务器并尝试访问
\\localServer\subfolder\file.ext? -
嗨 - 是的,为了澄清以服务器上的帐户登录,它确实有权查看和修改 EXEC sp_send_dbmail 中使用的两个路径。
-
共享文件夹有两种权限:一种用于共享,一种用于目录。确保服务帐户对两者都有足够的权限。
-
@lptr 实际上,服务帐户对两者都具有完全权限。
-
如果您将有效的文件移动到无效的文件夹中呢?如果您确实以服务帐户身份登录并验证该帐户可以访问该文件,那么错误消息可能比您的 Google 搜索更准确。您是否尝试过打开文件并确保它没有损坏?您是否确认您的 SMTP 服务器没有阻止该扩展?您是否尝试过通过同一 SMTP 服务器手动发送带有相同附件的电子邮件?
标签: sql-server sql-server-2014 sp-send-dbmail