祝愿大家身体健康!

 站点注册  找回密码
 站点注册

QQ登录

只需一步,快速开始

查看: 5335|回复: 3

字符集与排序方式

[复制链接]

字符集与排序方式

[复制链接]
93815200

主题

0

回帖

29

积分

注册会员

积分
29
贡献
在线时间
小时
2005-9-22 14:45:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?站点注册

×

请问大家,我现在想把我服务器上的字符集和排序方式修改一下, 请问我该怎样修改呢,

修改后对数据库里的数据会不会有什么影响??

请大家帮忙谢谢!!!

共享共进共赢Sharing And Win-win Results
SYBASEBBS - 免责申明1、欢迎访问“SYBASEBBS.COM”,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@sybasebbs.com
阿辉

主题

0

回帖

195

积分

超级版主

积分
195
贡献
在线时间
小时
2005-9-22 16:08:01 | 显示全部楼层

运行syconfig.exe

会对数据产生影响

建议在安装完后立即修改。

如果已经有数据,需要先用BCP导出,在改完后重新导入。

[此贴子已经被作者于2005-9-22 16:11:40编辑过]
共享共进共赢Sharing And Win-win Results
93815200 楼主

主题

0

回帖

29

积分

注册会员

积分
29
贡献
在线时间
小时
2005-9-22 17:09:54 | 显示全部楼层

我知道用,syconfig.exe修改,可担用完之后对数据会产生什么不良影响,

你所说的用BCP导出,它只是把数据导出了里面的一些索引什么的会不会

我修改会没有呢,

共享共进共赢Sharing And Win-win Results
阿辉

主题

0

回帖

195

积分

超级版主

积分
195
贡献
在线时间
小时
2005-9-23 09:15:31 | 显示全部楼层

给你转贴了一篇实例,看看你有没有用,呵呵~~~~~~~~

湖北地税征管软件eTax字符集转换为cp936技术说明

一、为什么要修改现在使用的数据库的字符集?

全省各地在推广和使用湖北省地方税务局组织开发的征管软件eTax过程中,不断地发现原来使用的数据库字符集不能够很好地处理一些比较偏僻的中文字符。和数据库系统软件提供商SYBASE中国公司技术部门联系,经过充分的测试后,SYBASE公司建议我们将现在使用的数据库的字符集cp850换为能够很好的处理简体中文和英文的字符集cp936。

二、替换数据库字符集比较好的时间是什么时候?
建议在业务不繁忙,不是在征收期进行该项工作。

三、确认修改数据库字符集的时间后,你的重要工作是什么?
注意:全部备份你的数据库,并且你要确保你的备份是有效的。已经进入省局数据仓库的单位请参考步骤:“七、断开复制”。

四、修改数据库字符集的整个思路是什么?

由于系统数据库字符集的修改涉及到很多方面的内容,过程长,环节烦琐,实施的数据库管理人员一定要有很高的责任心,必须经过充分的测试才能实施。

1、确认服务器停止对外服务前,完整地备份你的数据库。
2、将原来cp850或iso-1字符集的数据库数据bcp out到你指定的文件目录下。
3、重新构造你的服务器,配置你的服务器字符集为cp936。
4、重新建立并规划你的数据库。
5、将bcp out出来的数据bcp in 到新的数据库里(该数据库的字符集环境为cp936)。
6、修改并配合应用程序使其能够正常运行。确保对客户端最小化影响。

五、修改的操作步骤

以下假设:
Sybase server 名:diren (在Dsedit中设置)
Sybase sa的口令:sybase
生产库名:test
操作的目录:d:\ren

建议:按照以上假设,只需要将所有的生产库名test替换成你的生产库名字!

1、停止数据库服务器对外服务,注意并不是停止你的服务器的服务。检查一下master库的大小,不能小于40M。

2、备份你的数据库,注意是全部备份。建议你将你的数据库做一次DBCC。
1>dump database test to “d:\ren\test.dmp”
2>go

3、生成批处理文件
3.1 生成用户表BCP OUT批处理文件bcpout.bat
3.1.1 修改bcpout.txt文件,使其符合你的实际情况,bcpout.txt文件内容为:
select 'bcp test..' + name + ' out ' + '"' + 'd:\ren\' + name + '.dat' + '"' + ' -c -Usa -Psybase -Sdiren' from sysobjects where type='U' order by name
go

3.1.2 在DOS命令下执行以下命令:
d:\ren\>isql -U sa -Psybase -Sdiren -Dtest -ibcpout.txt -obcpout.bat

3.1.3 编辑结果文件bcpout.bat,将开头和结尾多余部分去掉,并查找到“GG_XTHP”,将该行删除(系统帮助表,因为包含有Text字段不能正常bcp in/out)。

3.2 生成用户表BCP IN批处理文件bcpin.bat
3.2.1 修改bcpin.txt文件,使其符合你的实际情况,bcpin.txt文件内容为:
select 'bcp test..' + name + ' in ' + '"' + 'd:\ren\' + name + '.dat' + '"' + ' -c -Usa -Psybase -Sdiren' from sysobjects where type='U' order by name
go

3.2.2 在DOS命令下执行以下命令:
d:\ren\>isql -U sa -Psybase -Sdiren -Dtest -ibcpin.txt -obcpin.bat

3.2.3 编辑结果文件bcpin.bat,将开头和结尾多余部分去掉,并查找到“GG_XTHP”,将该行删除(系统帮助表,因为包含有Text字段不能正常bcp in/out)。

4、导出数据
在DOS命令下执行4.1.3的结果文件bcpout.bat,得到数据。
d:\ren\>bcpout > bcpout_error.txt
导出结束后,检查输出文件bcpout_error.txt,看看有没有错误。

5、采用DBArtisan 7.2.1工具Extract以下文件,请严格按照以下顺序。

5.1 Check_Constraints.sql(导出后drop)

5.2 Foreign_keys.sql(导出后drop)

5.3 Indexes.sql(导出后drop)

5.4 Primary_Keys.sql (导出后drop),注意:可能出现FP_SNJZFP、SB_DZSBQKB不能drop,不必理会。

5.5 Procedures.sql

5.6 Triggers.sql(导出后drop)

5.7 Tables.sql

5.8 Views.sql

5.9 Sybase账号,导出可以参考以下命令:
D:\ren\>bcp master..syslogins out syslogins.dat -c -Usa -Psybase -Sdiren -F4

6、在isql状态下查看原来数据库字符集使用情况,服务器和客户端的都要查看,方法是:
获得服务器端的字符集情况:
1>sp_helpsort
2>go

输出结果应为:
Character Set = 2, cp850
Code Page 850 (Multilingual) character set.
Sort Order = 50, bin_cp850
Binary Sort Order for Code Page 850 (cp850).

获得客户端字符集情况:
1>select @@client_csname
2>go
输出结果应为:iso_1

说明:很多时候应用程序报错,客户端和服务器端字符集不相匹配。

7、查看原来数据库设备使用情况(主要是起参考作用),并做详细记载:
1>sp_helpdb test
2>go

检查点:确认你的以上准备工作已经全部做好。

8、在Sybase Central中将原来的生产数据库删除。

**************************************************************
敌人经过测试确认:数据库设备不需要删除,Sybase服务不需要重建!
注意:如果决定不重建Sybase服务,请直接跳过第9步直接到第10步!
**************************************************************

9、删除生产库设备,删除注册表相关键,重建Sybase服务。

9.1 删除生产库设备

9.2 停止Sybase服务,运行Sybase服务器配置工具,Remove Adaptive Server删除服务器diren,删除生产库物理文件,删除C:\sybase\data目录下文件:master.dat,sybprocs.dat。

9.3 清理注册表信息(为了保证本次修改后的数据库服务器diren和原来的一样,将原来的相关服务器diren删除)。
\\HKEY_LOCAL_MACHINE\SOFTWARE\SYBASE\Server\DIREN
\\HKEY_LOCAL_MACHINE\SOFTWARE\SYBASE\Server\DIREN_BS
\\HKEY_LOCAL_MACHINE\SOFTWARE\SYBASE\Server\DIREN_HS
\\HKEY_LOCAL_MACHINE\SOFTWARE\SYBASE\Server\DIREN_MS
\\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment下相关键。
\\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下以下键:
SYBSQL_DIREN
SYBXPS_DIREN_XP
SYBBCK_DIREN_BS
SYBMON_DIREN_MS
SYBHIS_DIREN_HS
ControlSet001以及ControlSet002等中的CurrentControlSet键中的相应键也要删除(如果有的话)。

9.4 运行Sybase服务器配置工具重新build server,使用原来数据库服务器名字。

9.5 重新设置服务器参数,调整master库大小,增加tempdb库大小。

10、将数据库的缺省字符集设置为cp936:
C:\>cd sybase
C:\sybase>cd charsets
C:\sybase\charsets>cd cp936
C:\sybase\charsets\cp936>charset -Usa -Psybase -Sdiren binary.srt cp936

你将看到下面的信息,表示这时你已经成功添加了cp936字符集到你的系统中。
Loading file 'binary.srt'.
Found a [sortorder] section.
This is Class-1 sort order.
Finished loading the Character Set Definition.
Finished loading file 'binary.srt'.
1 sort order loaded successfully

11、接着是将添加的cp936设置为你的缺省值。方法是:
C:\sybase\charsets\cp936>isql -Usa -Psybase -Sdiren
1> select name,id from syscharsets
2> go
ascii_8 0
iso_1 1
cp850 2
bin_iso_1 50
bin_cp850 50
bin_cp936 50
cp936 171
这样知道你的cp936的ID号是171

12、将刚才新build的server的数据库缺省的字符集设置为cp936
1> sp_configure 'default character set id',171
2> go
In changing the default sort order, you have also reconfigured SQL Server's default character set.
Parameter Name Default Memory Used Config Value Run Value
------------------------------ ----------- ----------- ------------ -----------
default character set id 1 0 171 2
(1 row affected)
Configuration option changed. Since the option is static, Adaptive Server must be rebooted in order for the change to take effect.
(return status = 0)

13、重新启动服务器两次(参考使用DOS命令net start SYBSQL_diren)。第一次启动报错“服务器SYBSQL_diren不能启动,请检查它的配置”很正常,第二次正确启动,表明你的设置成功了。

14、在DOS下用edit修改客户端缺省字符集文件c:\sybase\locales\locales.dat
c:\sybase\locales\>edit locales.dat
首先找到[NT]操作系统分组,然后定位到该分组最后一行“local = default, us_english, iso_1”,将其修改为:“local = default, us_english, cp936”。
参考步骤6,确认服务器端和客户端字符集均已修改正确。

15、在Sybase Central中,重新建立新的空数据库,仔细规划好生产数据库数据设备和日志设备的大小。以前觉得数据库设备分配不合理的,在这时你可以重新考虑设备的分配。

16、使用先前准备好的建库对象脚本建立表及其其他对象信息。将先前bcp出的数据bcp in到新的数据库中去,请严格按照如下顺序。索引在你数据导入完成后执行,效率会更高。

注意:生产库数据库选项“允许选择进入/批量复制”、“缺省允许为空”要打勾;每做一步后,查看一下输出文件,看看有没有错误。

16.1 D:\ren\>isql -Usa -Psybase -Sdiren -D test -i Tables.sql -o Tables_error.txt

16.2 D:\ren\>isql -Usa -Psybase -Sdiren -D test -i Views.sql -o Views_error.txt

16.3 D:\ren\>bcpin > bcpin_error.txt

16.4 D:\ren\>isql -Usa -Psybase -Sdiren -D test -i Primary_Keys.sql -o Primary_Keys_error.txt

16.5 D:\ren\>isql -Usa -Psybase -Sdiren -D test -i Foreign_keys.sql -o Foreign_keys_error.txt

16.6 D:\ren\>isql -Usa -Psybase -Sdiren -D test -i Indexes.sql -o Indexes_error.txt

16.7 D:\ren\>isql -Usa -Psybase -Sdiren -D test -i Check_Constraints.sql -o Check_Con_error.txt

16.8 D:\ren\>isql -Usa -Psybase -Sdiren -D test -i Procedures.sql -o Procedures_error.txt

16.9 D:\ren\>isql -Usa -Psybase -Sdiren -D test -i Triggers.sql -o Triggers_error.txt

16.10 将logins bcp进入到系统表,保证原来的合法帐号被成功加入。注意:首先要设置/取消‘allow updates to system tables’。
D:\ren\> isql -Usa -Psybase -Sdiren
1> sp_configure "allow updates to system tables", 1
2>go

1> delete from syslogins where suid >=6 //删除非SYBASE系统用户。
2>go

D:\ren\>bcp master..syslogins in syslogins.dat -c -Usa -Psybase -Sdiren

D:\ren\> isql -Usa -Psybase -Sdiren
1> sp_configure "allow updates to system tables", 0
2>go

16.11 增加用户别名
16.11.1 修改syslogins.txt文件,使其符合你的实际情况,syslogins.txt文件内容为:
use master
go
select 'sp_addalias ' + name + ', dbo' + '
go'
from syslogins where suid>3
go

16.11.2 在DOS命令下执行以下命令:
D:\ren>isql -Usa -Psybase -isyslogins.txt -osysloginsalias.txt

16.11.3 编辑结果文件sysloginsalias.txt,将开头和结尾多余部分去掉。

16.11.4在DOS命令下执行以下命令(注意增加了-Dtest):
D:\ren>isql -Usa -Psybase -Dtest -isysloginsalias.txt -osysloginsalias_error.txt

17、取消生产库数据库选项“允许选择进入/批量复制” 、“缺省允许为空”。

六、eTax客户端的修改

1、修改注册表信息,测试应用程序。这时你的新的数据库将能够很好的处理中文字符了。
找到注册表中如下键值:HKEY_LOCAL_MACHINE\SOFTWARE\Tax\DataBase\DBParm。
修改前的值为: Language='us_english',CharSet='iso_1'
修改后的值为: Language='us_english',CharSet='cp936'

注:也可以设置好注册表信息后,生成一个文件,由各个操作员自己执行即可。

2、在DOS下用edit修改客户端缺省字符集文件c:\sybase\locales\locales.dat
c:\sybase\locales\>edit locales.dat
首先找到[NT]操作系统分组,然后定位到该分组最后一行“local = default, us_english, iso_1”,将其修改为:“local = default, us_english, cp936”。

七、断开复制(仅针对已进入省局数据仓库单位)

D:\ren\isql –Usa –Psybase –Sdiren
1>use test
2>go
1>sp_start_rep_agent test, “disable”
2>go

停止复制代理:
D:\ren\isql –Usa –Psybase –Sdiren
1>use test
2>go
1> sp_stop_rep_agent test
2>go

注意:备份在此之前做。

八、PB系统表修改(敌人:3月16日下午终于可以用一条语句解决这个问题,心头狂喜)

1、修改pbcattbl(表名说明表)
D:\ren\isql –Usa –Psybase –Sdiren
1> use test
2> go
1> update pbcattbl set pbcattbl.pbt_tid = sysobjects.id from pbcattbl,sysobjects where pbcattbl.pbt_tnam=sysobjects.name and sysobjects.type = 'U'
2> go

2、修改pbcatcol(表字段说明表)
敌人在修改该表的时候发现,在该表中有两部分记录有问题,一个是该表中关于表“XA_CWBB”,一个是该表中关于表“XA_ZBDY”,注意:pbc_tid,pbc_cid,其中pbc_cid有重复!因此,敌人如下修改:

2.1 删除pbcatcol的索引:pbcatcol_idx
D:\ren\isql –Usa –Psybase –Sdiren
1> use test
2> go
1> DROP INDEX pbcatcol.pbcatcol_idx
2> go

2.2 修改pbcatcol的字段pbc_tid
1> update pbcatcol set pbcatcol.pbc_tid = sysobjects.id from pbcatcol,sysobjects where pbcatcol.pbc_tnam=sysobjects.name and sysobjects.type = 'U'
2> go

2.3 删除pbcatcol表中关于“XA_CWBB”、“XA_ZBDY”的纪录
1> delete from pbcatcol where pbc_tnam='XA_CWBB'
2> go
1> delete from pbcatcol where pbc_tnam='XA_ZBDY'
2> go

2.4重建pbcatcol的索引:pbcatcol_idx
1> CREATE UNIQUE NONCLUSTERED INDEX pbcatcol_idx ON pbcatcol(pbc_tid,pbc_cid)
2> go

共享共进共赢Sharing And Win-win Results
您需要登录后才可以回帖 登录 | 站点注册

本版积分规则

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com

QQ|Archiver|PowerBuilder(PB)BBS社区 ( 鲁ICP备2021027222号-1 )

GMT+8, 2024-5-10 18:44 , Processed in 0.525020 second(s), 7 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表