You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求SQL Server中DefaultAttachmentEncoding参数的有效值及作用说明

SQL Server Database Mail 附件编码问题

一、DefaultAttachmentEncoding的有效值和实际作用

  • 有效值:微软官方文档未明确列全所有有效值,但实际测试可用的有以下几个:
    • MIME:默认值,采用Base64编码附件,编码格式随邮件内容逻辑决定
    • UTF-8:指定本地文件附件使用UTF-8编码
    • UTF-16:对应带BOM的Unicode编码(也就是你当前看到的附件编码)
    • 注意:不存在UTF-18编码,设置该值会被系统忽略,自动 fallback 到默认行为
  • 实际作用:这个参数仅对直接添加的本地文件附件生效,对@attach_query_result_as_file生成的查询结果附件完全不起作用——这就是你修改后编码无变化的核心原因!

二、解决查询结果附件的编码问题

要让sp_send_dbmail生成的CSV附件使用UTF-8编码,需要在调用时添加专门控制查询结果的参数,而非修改全局配置:

EXEC sp_send_dbmail @profile_name = 'default',
                    @recipients = 'email@email.com',
                    @subject = 'subject',
                    @body = 'hello',
                    @query = 'select * from myTable',
                    @attach_query_result_as_file = 1,
                    @query_attachment_filename = 'Results.csv', 
                    @query_result_separator = ',',
                    -- 关键参数:指定查询结果附件的编码为UTF-8
                    @query_result_charset = 'UTF-8',
                    -- 可选:是否保留查询结果的列名,按需设置
                    @query_result_header = 1,
                    -- 可选:设置足够宽的行宽,避免内容截断
                    @query_result_width = 32767
  • 划重点:@query_result_charset才是控制查询结果附件编码的专属参数,支持UTF-8、UTF-16等合法字符集,和全局的DefaultAttachmentEncoding参数无关联。

三、额外提示

  • 如果需要生成带BOM的UTF-8文件,可以在查询开头添加SELECT N''(这是UTF-8的BOM字符,肉眼不可见),再拼接你的业务查询语句。
  • 目前无法通过全局配置设置查询结果的默认编码,每次调用sp_send_dbmail时都需要显式指定@query_result_charset参数。

内容的提问来源于stack exchange,提问作者Sabatino Ognibene

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 00:05:01