【问题标题】:Attachment file is invalid - SQL Server 2014附件文件无效 - SQL Server 2014
【发布时间】: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 ServerSQL 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


【解决方案1】:

我会添加评论,但没有声誉:)。

当文件名中包含无效字符(不同的编码/字符页面)时,我遇到了一些问题。尝试将“要发送的文件”重命名为一个新的简单名称并重试发送,以确保它不是由此引起的。就我而言(~~10 年前),从 Windows 资源管理器查看文件名时似乎没问题,但邮件客户端不接受该名称。

另外,您可以使用 mklink 创建一个指向该共享的本地文件夹。通过这种方式,您可以从问题中消除 UNC 路径问题。

【讨论】:

  • 睡了一夜之后,它会将问题分解成碎片:将文件从 some_folder 复制到 another_folder 应该可以工作的地方。如果可行,只需将文件复制/粘贴到同一文件夹中(在这种情况下,新文件具有新权限)。如果这不起作用,请将文件复制到本地 SQL 服务器上,看看是否可以解决问题...缩小范围应该会有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-31
相关资源
最近更新 更多