我正在使用SQL2005中的sp_send_dbmail发送电子邮件,并在附件中包含结果。当附件被发送时,它是UCS-2编码的,我希望它是ANSI或UTF-8。
下面是SQL语句
EXEC msdb.dbo.sp_send_dbmail
@recipients = 'temp@example.com'
, @query = 'DECLARE @string_to_trim varchar(60);SET @string_to_trim = ''1234''; select rtrim(@string_to_trim), ''tom'''
, @query_result_header=0
, @subject = 'see attach'
, @body= 'temp body'
, @profile_name= N'wksql01tAdmin'
, @body_format = 'HTML'
,@query_result_separator = ','
,@query_attachment_filename = 'results.csv'
,@query_no_truncate = '0'
,@attach_query_result_as_file = 1我在网上看到了一些评论,说这是用sql2005 SP2修复的,但没有发现是这样的。
发布于 2008-09-03 22:13:00
我认为解决您所看到的问题的唯一方法是使用BCP将数据转储到一个平面文件,然后附加该文件。抱歉,我帮不上忙。:(
发布于 2013-02-03 15:43:24
在对SQL Server2008 R2进行了一些研究之后:
sp_send_dbmail:EXECUTE AS 'dbo'
如果(@AttachmentsExist= 1)开始.......结束
通过以下方式:
IF(@AttachmentsExist = 1) begin if (@ANSI_Attachment = 1) BEGIN --将临时附件复制到sysmail_attachments插入sysmail_attachments(mailitem_id,文件名,文件大小,附件) SELECT @mailitem_id,文件名,文件大小,convert(可变二进制(最大),子字符串(--从unicode中移除BOM标记convert(可变字符(Max),CONVERT (nvarchar(最大),附件)),2,DATALENGTH(附件)/2)) FROM sysmail_attachments_transfer WHERE uid = @temp_table_uid end else begin --将临时附件复制到sysmail_attachments插入到sysmail_attachments(mailitem_id,文件名,文件大小,附件)选择@mailitem_id,文件名,文件大小,来自sysmail_attachments_transfer的附件,其中uid = @temp_table_uid end END
发布于 2011-04-26 05:17:06
为了使文件成为ANSI/UTF-8
使用此行和其他变量更改msdb中的sp_send_dbmail:@ANSI_Attachment BIT = 0,即
@mailitem_id INT = NULL OUTPUT,
@ANSI_Attachment BIT = 0
WITH EXECUTE AS 'dbo'然后将这一行添加到对sp_send_dbmail的调用中:
@ansi_attachment = 1那么它应该给你一个ansi附件,而不是unicode。
https://stackoverflow.com/questions/42703
复制相似问题