llh13610 发表于 2013-1-30 00:16:57

sybase数据库文中乱码问题

1.Sybase数据库日志满

    碰到这种情况,常会出现能查询数据,但无法更新数据,启动事务等。在代码中跟踪可以发现,连接能够打开,但事务却无法开启。常会提示“Connection to Sybase server has been lost. All active transactions have been rollbacked”的错误信息。
    解决办法:
    若是开发数据库,则直接清除日志即可。若是正式数据库:建议备份当前日志再清空日志,扩日志设备及日志数据库。清空日志的语句为dump   transaction   database_name   with   no_log

2.Sybase中文乱码

    出现这种情况的原因是sybase的服务器字符集不支持中文或是客户端的字符集与服务端字符集不一致。可以考虑更改sybase的默认字符集。在Sybase12.5的版本中支持中文的字符集有CP936、EUCGB、UTF-8和GB18030。这里我们针对Sybase服务器字符集不支持中文给出解决办法:
   解决办法(安装cp936字符集):
   假设sybase的安装路径为"D:\Sybase"。
   (1) D:\>cd \sybase\charsets\cp936   (2) D:\sybase\charsets\cp936> charset -Usa -Psa_pass -Sserver_name binary.srt cp936
   (3) 在InterActiveSQL中执行『select name,id from syscharsets』,需注意的是这里要选择在“master”数据库下执行,第4步也是。找到name为cp936的ID,假定是171。
    (4)在InterActiveSQL中执行『sp_configure 'default character set id',171』
   (5) 重启Sybase服务两次。因为第一次启动后会自动结束掉,所以需要重启第二次。

3.Sybase数据库整个库导出导入

    导出:declare @filename varchar(30)                     select@filename='E:\BCP\bf_' + Convert(varchar(10),getdate(),110) + '.dat'                     dumpdatabase   ExamSysDB   to   @filename                        go
    导入:load database pubs2               from 'E:\bcp\bf_080101.dat'

4.bcp导入导出数据

    导入到ExamSysDB数据库的TB_USER表中:
             bcp ExamSysDB..TB_USER in C:\BCP\SqlServerOut\TB_USER.bcp -Usa -P -SSyDevserver -Jcp936 -c
    导出ExamSysDB数据库的TB_USER表的数据:
            bcp ExamSysDB..TB_USER out C:\BCP\SqlServerOut\TB_USER.bcp -Usa -P -SSyDevserver -Jcp936 -c
    批量导入数据的参考SQL
set nocount on use ExamSysDBgoselect 'bcp ExamSysDB..' + name + ' in C:\BCP\SqlServerOut\'   + name + '.bcp -Usa -P -SDEVSERVER -Jcp936 -c 'from sysobjectswhere type='U' and name like '%TB_%'go
    批量导出数据的参考SQL
set nocount on use ExamSysDBgoselect 'bcp ExamSysDB..' + name + ' out C:\BCP\SqlServerOut\'   + name + '.bcp -Usa -Pdbadmin -SDevserver -c 'from sysobjectswhere type='U' and name like '%TB_%'go
页: [1]
查看完整版本: sybase数据库文中乱码问题