解决使用SQLServer2008R2的“sp_send_dbmail”发邮件,当邮件标题、内容中有中文时就会变成“?”的问题

解决使用SQLServer2008R2的“sp_send_dbmail”发邮件,当邮件标题、内容中有中文时就会变成“?”的问题,第1张

概述问题:使用SQLServer2008R2的“sp_send_dbmail”发邮件,当邮件标题、内容中有中文时就会变成“?”。 分析: 经过分析是因为安装数据库的排序规则 “ SQL_Latin1_General_CP1_CI_AS ”导致的。 需求:安装数据库时,将字符集安装成了“SQL_Latin1_General_CP1_CI_AS”,现在需要将其更改为“Chinese_PRC_CI_AS”。

问题:使用sqlServer2008R2的“sp_send_dbmail”发邮件,当邮件标题、内容中有中文时就会变成“?”

分析: 经过分析是因为安装数据库的排序规则 sql_latin1_General_CP1_CI_AS ”导致的。

需求:安装数据库时,将字符集安装成了“sql_latin1_General_CP1_CI_AS”,现在需要将其更改为“Chinese_PRC_CI_AS”。

        提示:使用下列脚本可以查询到当前数据库的排序规则(注意:排序规则在安装数据库时是可以选择的,大家常常会忽略。)

        

方法:重新生成系统数据库 ,然后还原配置信息。

        提示:这种方法是有局限性的,重新生成 master、model、msdb 和 tempdb 系统数据库时,将删除这些数据库,然后在其原位置重新创建。 如果在重新生成语句中指定了新排序规则,则将使用该排序规则设置创建系统数据库。 用户对这些数据库所做的所有修改都会丢失。 例如,您在 master 数据库中的用户定义对象、在 msdb 中的预定作业或在 model 数据库中对默认数据库设置的更改都会丢失。

-----------------------------------------------------------------------------------

前期准备

          提示:如没有重要配置信息可以略过前期准备,如之前配置过了数据库邮件配置,则可以在重新生成系统数据库后再重新配置。

在重新生成系统数据库之前执行下列任务,以确保可以将系统数据库还原至它们的当前设置。

记录所有服务器范围的配置值。
SELECT * FROM sys.configurations; 记录所有应用到 sql Server 实例和当前排序规则的 Service Pack 和修补程序。 重新生成系统数据库后必须重新应用这些更新。
SELECT
SERVERPROPERTY('ProductVersion ') AS ProductVersion,
SERVERPROPERTY('ProductLevel') AS ProductLevel,
SERVERPROPERTY('ResourceVersion') AS ResourceVersion,
SERVERPROPERTY('ResourceLastUpdateDateTime') AS ResourceLastUpdateDateTime,
SERVERPROPERTY('Collation') AS Collation;
记录系统数据库的所有数据文件和日志文件的当前位置。 重新生成系统数据库会将所有系统数据库安装到其原位置。 如果已将系统数据库数据文件或日志文件移动到其他位置,则必须再次移动这些文件。
SELECT name,physical_name AS current_file_location
FROM sys.master_files
WHERE database_ID IN (DB_ID('master'),DB_ID('model'),DB_ID('msdb'),DB_ID('tempdb'));
如果将 sql Server 的实例配置为复制分发服务器,请找到该分发数据库的当前备份。 确保您有重新生成系统数据库的相应权限。 必须是 sysadmin 固定服务器角色的成员才能执行此 *** 作。 有关详细信息,请参阅服务器级别角色 将原数据库的帐号、JOB等与系统数据库相关的信息全部备份起来(可以先生成相应的脚本),分离掉所有用户库。 -----------------------------------------------------------------------------------
*** 作方法:

Step1、先解压好sqlServer的安装文件,如:解压在D盘的“sql Server 2008R2 x86 x64”文件夹下;

Step2、开始-->运行输入“CMD”进入CMD模式,在命令行下进入sql Server 安装文件所在目录(setup.exe文件所在目录,即sql Server 2008R2 x86 x64”目录下

Step3、运行命令:Net stop mssqlserver  关闭mssqlserver服务,当提示成功后执行下一步;

Step4、执行如下命令:Setup /QUIET /ACTION=REBUILDDATABASE /instancename=mssqlserver /sqlSYSadminACCOUNTS=administrator /sapwd=XXXXXX /sqlcollation=Chinese_PRC_CI_AS 

提示:Step4执行的时间可能会有一些长,只要不报错,请安静等待命令行提示符出现,此时说明已经执行成功了;

参数说明:

参数名称

说明

/QUIET 或 /Q

指定在没有任何用户界面的情况下运行安装程序。

/ACTION=REBUILDDATABASE

指定安装程序将重新创建系统数据库。

/INSTANCEname=Instancename

sql Server 实例的名称。 对于默认实例,请输入 MSsqlSERVER

/sqlSYSadminACCOUNTS=accounts

指当前 *** 作系统的管理员账号

指定要添加到 sysadmin 固定服务器角色中的 windows 组或单个帐户。 指定多个帐户时,请用空格将帐户隔开。 例如,请输入 BUILTIN\administrators MyDomain\MyUser 当您在帐户名称内指定包含空格的帐户时,用双引号将该帐户引起来。 例如,输入 NT AUTHORITY\SYstem

[ /SAPWD=StrongPassword ]

指定 sql Server sa 帐户的密码。 如果实例使用混合身份验证(sql Server  windows 身份验证)模式,则此参数是必需的。

安全说明

sa 帐户是一个广为人知的 sql Server 帐户,并且经常成为恶意用户的攻击目标。 因此,为 sa 登录名使用强密码非常重要。

不要为 windows 身份验证模式指定此参数。

[ /sqlColLATION=Collationname ]

指定新服务器级排序规则。 此参数可选。 如果没有指定,则使用服务器的当前排序规则。

重要提示

更改服务器级排序规则不会更改现有用户数据库的排序规则。 默认情况下,所有新创建的用户数据库都将使用新排序规则。

有关详细信息,请参阅设置或更改服务器排序规则

 

Step5、运行命令:Net start mssqlserver 开启mssqlserver服务,当提示成功后完成 *** 作,即可执行下一步进行验证。

Step6、执行如下脚本查看collation列是否已经被修改为“Chinese_PRC_CI_AS”。

Step7、重新配置数据库邮件配置。

Step8、如使用下图中的脚本发送测试邮件。

    

总结

以上是内存溢出为你收集整理的解决使用SQLServer2008R2的“sp_send_dbmail”发邮件,当邮件标题、内容中有中文时就会变成“?”的问题全部内容,希望文章能够帮你解决解决使用SQLServer2008R2的“sp_send_dbmail”发邮件,当邮件标题、内容中有中文时就会变成“?”的问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1173776.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存