kingdee k3v12明细帐中文摘要“问号”与过滤时报错的原因分析

li00lee 2012-11-06

问题背景:

单位重装财务服务器,在装k3时安装界面为乱码,后将操作系统区域设置为中国,再次安装k3没有出现乱码。

问题描述:

1、在操作明细帐时,摘要一栏中文全部显示为“问号”,查看凭证摘要正常显示中文。

2、过滤明细帐时,若勾选“按对方科目多条显示”,提示:“名称或代码在系统中已被使用”。详细:

错误代码:3604(E14H)

Source:MicrosoftOLEDBProviderforSQLServer

Detail :无法执行 varchar 值到 varchar 的隐式转换,原因是,由于排序规则冲突,该值的排序规则未经解析。
 

分析:

这两个问题可能是一个问题引起,排序规则冲突,master与k3数据库排序规则不一致。为什么不一致?初步估计是因为在装sql2005时操作系统区域设置为美国。

为什么明细帐摘要中文显示问号,而凭证显示正常呢?这个问题确实不好理解,可能k3在取明细帐摘要时用到了临时表之类的系统库资源(问题2应该是这个原因),也有可能是k3的这个控件有问题。

微软网站上有一段关于Master 数据库与用户定义的数据库的排序规则应一致的说明:

建议用户定义的数据库排序规则与 master 或 model 的排序规则一致。否则,可能会发生使代码无法执行的排序规则冲突。例如,当存储过程将一个表连接到一个临时表时,如果用户定义的数据库排序规则与 model 数据库的排序规则不同,SQL Server 可能会结束该批处理并返回一个排序规则冲突错误。出现这种情况的原因是临时表是在 tempdb 中创建的,而后者的排序规则基于 model 的排序规则。

原文:http://technet.microsoft.com/zh-cn/library/bb402915%28v=sql.105%29

如何更改master排序规则:

如果您必须更改 SQL Server 2005 实例的默认排序规则,则必须首先编写脚本或备份您的数据库、删除所有用户数据库,然后重新生成 master 数据库 — 在安装程序命令的 SQLCOLLATION 属性中指定新排序规则,如下所示:

start/waitsetup.exe/qbINSTANCENAME=MSSQLSERVERREINSTALL=SQL_Engine

REBUILDDATABASE=1SAPWD=testSQLCOLLATION=Chinese_PRC_CI_AS

 原文:http://msdn.microsoft.com/zh-cn/library/bb330962.aspx

经验:

1、装完操作系统一定要注意区域语言设置。哪怕装的是中文简体版。

2、检查时区设置。

3、mssql数据库要注意系统数据库与用户数据库的排序规则一致。

相关推荐