none
我们自己写了个存储过程,调用微软自动发送邮件的存储过程mash.dbo.sp_send_dbmail ,执行job的账号是域账号,并且是在administrator组内。后来又单独重新为域账户增加了文件夹权限,只要发生附件就报错,错误信息都一样。 RRS feed

  • 问题

  • 我们自己写了个存储过程,调用微软自动发送邮件的存储过程mash.dbo.sp_send_dbmail ,执行job的账号是域账号,并且是在administrator组内。后来又单独重新为域账户增加了文件夹权限,只要发生附件就报错,错误信息都一样。
    如果不发送附件,就是附件那个参数@file_attachment 不取那个路径,只是空着的话,也不报错.
    附件路径参数值改成服务器名开头的,job报错信息里就服务器名开头的错误,错误都是路径invalid。
    若参数取值为D盘开头 job报错信息就是D盘…路径无效。

    报错信息如下:
    Execute as user: RRR\CNSMSSQL001A. Attachment file D:\Attach Files\20210303\abc.xls is invalid. [SQLSTATE 42000](Error 22051).
    2021年3月25日 7:53

全部回复

  • 你好,

    首先确保为参数@file_attachment指定的内容符合规范。

    [@file_attachments =]'file_attachments'是用分号分隔的文件名列表,用于附加到电子邮件中。 列表中的文件必须指定为绝对路径。 附件列表的类型为nvarchar(max)。 默认情况下,数据库邮件将文件附件限制为每个文件1 MB。
    sp_send_dbmail(Transact-SQL)

    另外这可能是权限问题。执行sp_send_dbmail时,它将使用SQL Server引擎服务帐户来访问文件。请向SQL Server引擎服务帐户授予对该目录的读取权限。

    2021年3月25日 8:40
  • 你好,

    请问您的问题解决了吗?
    如果您觉得我们的回复帮助你解决了该问题,请帮忙‘标记为答案'以帮助其他社区成员迅速找到有用的答复。
    如果没有,请回复并告诉我们当前情况,以便提供进一步的帮助。

    谢谢

    2021年3月26日 9:44
  • 你好,我们公司DBA尝试做,不过把数据库引擎服务启动帐号设置为域帐号后会出现服务器长时间不能使用的状况。

    2021年3月30日 8:21
  • 你好,

    对于将SQL Server数据库引擎服务启动设置为域账号出现的问题,需要进行具体的分析,包括具体的问题描述(不能使用是指什么,服务无法启动?),错误日志等。

    如果是为了测试此帖子中的问题,且是从本地磁盘读取文件,可以不更改SQL Server数据库引擎服务启动帐号,只需要向其授予所需目录的读取权限。如果是虚拟帐号(类似NT SERVICE\MSSQLSERVER),在计算机上是搜索和浏览不到的,直接输入帐号名就行了。

    2021年3月30日 9:13
  • Team 你好!

    终于登录上来了,非常感谢我们的客服同事,帮我们提ticket反馈了这个问题。目前,切换到域帐号后,带附件的邮件可以正常发送了。期间遇到的SQL

    Management Studio 不能访问题,估计是时间问题(各项服务启动需要时间)。过了一会儿后,SQL Management Studio就也可以正常访问了。

    非常感谢微软团队,给力!!!!

    2021年3月31日 4:00
  • 你好,

    感谢您的回复,很高兴您的问题已经得到了解决。

    所以在使用sp_send_dbmail时无法发送附件的问题应该是SQL Server服务启动帐号不具备相应资源(文件)的访问权限。

    这里也有一篇有关SQL Server服务帐号和权限的官方文档,如需了解更多信息,请参阅。

    https://docs.microsoft.com/zh-cn/sql/database-engine/configure-windows/configure-windows-service-accounts-and-permissions?view=sql-server-ver15

    ———————————————————————————————————————————————

    如果您已解决问题,请将有用的答复标记为答案。 这可能对其他遇到类似问题的社区成员有帮助。
    此外,如果您还有其他问题,请随时提出。

    2021年3月31日 5:52