大家可以打开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 编辑过] |