如题。 谁遇到的,如何解决,请 给个回复。谢谢。
提示,是否同 数据库的排序方式不是 Latin1_General_BIN 有关系??
Liya遇到的情况应该是MS SQLServer吧?我在Oracle中没有遇到过。
的确是数据库排序规则错误。
Liya , 就是你说的问题。解决方法有一个:不动数据库,直接修改SQL SERVER 2000的排序规则能解决此问题,但带来的恶果是在SQLSERVER 再也打不开表结构。我就是这样的,哈哈。
大家可以打开console,在solution页面上面有一个database scripts,点这个可以看到console创建数据库时所使用的sql语句。在创建数据库时配置程序自动将排序规则限制为了lartin,故adonix数据库的排序规则自建好后就默认为lartin了。
关于此问题,我想到了解决办法,但是需要装了sqlserver2000的同学帮我做小白鼠,哈哈。
貌似如果安装sqlserver2005中文版就不会有这个问题。
我的解决思路:
1、更改数据库排序规则;
use master;
ALTER DATABASE adonix COLLATE Chinese_PRC_CI_AS
2、读取所有表:
Select
'alter table ',sysobjects.name As Tb_name,' alter column ',
syscolumns.name As Colu_name,
systypes.name As Col_type, '(',
syscolumns.length/2 As Col_len,') collate Chinese_PRC_CI_AS;'
from sysobjects,systypes,syscolumns
where sysobjects.xtype ='U'
and sysobjects.id = syscolumns.id and
systypes.xtype = syscolumns.xtype and
systypes.name <> 'sysname' and
sysobjects.name Like '%' AND systypes.name='nvarchar'
union
Select
'alter table ',sysobjects.name As Tb_name,' alter column ',
syscolumns.name As Colu_name,
systypes.name As Col_type, '(',
syscolumns.length As Col_len,') collate Chinese_PRC_CI_AS;'
from sysobjects,systypes,syscolumns
where sysobjects.xtype ='U'
and sysobjects.id = syscolumns.id and
systypes.xtype = syscolumns.xtype and
systypes.name <> 'sysname' and
sysobjects.name Like '%' AND systypes.name<>'nvarchar'
order by sysobjects.name,syscolumns.name
这一段sql的功能是把syscolumns里面所有类型为varchar/nvarchar的字段读出来,把各字段的排序规则改为Chinese。
为什么要这样做?
第一步:修改数据库的默认排序规则,这样后续这个db中新建的表都将按照新的排序规则来执行;
第二步:系统中原有表的排序规则也要改。因为事实上我们新建表的机会不会太多,修改现有的才是最重要的。
注意:在使用下面一段sql进行排序规则读取和修改的时候,应注意字段是否为空的设置,这个属性也应该带进去。这个设置是在syscolumns.isnull什么的,可以看看syscolumns这个表。
关于alter table修改排序规则的sql语法可以参考sqlserver 查询分析器的说明。
很重要一点:
现在MS已经停止销售sqlserver2000转而推sqlserver2005,我们的客户中使用2000的好像已不太多,基本上已经全部转到2005/oracle后台,更多使用sqlserver2000的是我们自己内部的顾问。这个修改是否有必要继续研究下去还有待商榷。建议有此现象的同学干脆下手狠一点,花点精力把机器重新弄一下,更新到2005/oracle上面来。
欢迎拍砖。。。。
[此帖子已被 tansj 在 2009-3-5 10:53:25 编辑过]
SQL2005如果排序规则是Latin1_General_BIN ,也还是显示问号????。
看来的确是排序规则的问题。
zhihui.chen:SQL2005如果排序规则是Latin1_General_BIN ,也还是显示问号????。
看来的确是排序规则的问题。
2005修改数据库排序规则很方便,不用研究语句了。数据库--属性---选项修改即OK
zhihui.chen:zhihui.chen:SQL2005如果排序规则是Latin1_General_BIN ,也还是显示问号????。
看来的确是排序规则的问题。
2005修改数据库排序规则很方便,不用研究语句了。数据库--属性---选项修改即OK
修改数据库的排序规则会同步更新到现有的表字段的排序规则吗?可以把sqlserver的建表sql导出来研究下。我这没有sqlserver2005环境,谁有的麻烦看下。
oracle下帐套导入到sql2005后,如果收藏乱码也要在数据库中修改排序规则。
如果出现排序错误,请在数据库修改成中文排序规则后,再把帐套导入一次即可正常,估计是导入的时候重新对数据进行排序了!
[此帖子已被 扶程星云 在 2010-1-25 17:11:42 编辑过]
欢迎光临 赛捷软件论坛 (http://sagesoft.cn/bbs/) | Powered by Discuz! 7.2 |