`
liss
  • 浏览: 824844 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

sybase数据库文中乱码问题

阅读更多

1.Sybase数据库日志满

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

Java代码 复制代码
  1. dump   transaction   database_name   with   no_log    
dump   transaction   database_name   with   no_log  



2.Sybase中文乱码

    出现这种情况的原因是sybase的服务器字符集不支持中文或是客户端的字符集与服务端字符集不一致。可以考虑更改sybase的默认字符集。在Sybase12.5的版本中支持中文的字符集有CP936、EUCGB、UTF-8和GB18030。这里我们针对Sybase服务器字符集不支持中文给出解决办法:
   解决办法(安装cp936字符集):
   假设sybase的安装路径为"D:\Sybase"。
  

Java代码 复制代码
  1. (1) D:\>cd \sybase\charsets\cp936   
  2.    (2) D:\sybase\charsets\cp936> charset -Usa -Psa_pass -Sserver_name binary.srt cp936  
(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数据库整个库导出导入

    导出

Java代码 复制代码
  1. :declare @filename varchar(30)   
  2.                      select  @filename='E:\BCP\bf_' + Convert(varchar(10),getdate(),110) + '.dat'  
  3.                      dump  database   ExamSysDB   to   @filename  
  4.                           go   
:declare @filename varchar(30)
                     select  @filename='E:\BCP\bf_' + Convert(varchar(10),getdate(),110) + '.dat'
                     dump  database   ExamSysDB   to   @filename
                          go 


    导入:

Java代码 复制代码
  1. load database pubs2   
  2.                from 'E:\bcp\bf_080101.dat'  
load database pubs2
               from 'E:\bcp\bf_080101.dat'



4.bcp导入导出数据

    导入到ExamSysDB数据库的TB_USER表中:
            

Java代码 复制代码
  1. bcp ExamSysDB..TB_USER in C:\BCP\SqlServerOut\TB_USER.bcp -Usa -P -SSyDevserver -Jcp936 -c   
bcp ExamSysDB..TB_USER in C:\BCP\SqlServerOut\TB_USER.bcp -Usa -P -SSyDevserver -Jcp936 -c 


    导出ExamSysDB数据库的TB_USER表的数据:
             

Java代码 复制代码
  1. bcp ExamSysDB..TB_USER out C:\BCP\SqlServerOut\TB_USER.bcp -Usa -P -SSyDevserver -Jcp936 -c   
bcp ExamSysDB..TB_USER out C:\BCP\SqlServerOut\TB_USER.bcp -Usa -P -SSyDevserver -Jcp936 -c 


    批量导入数据的参考SQL

Java代码 复制代码
  1. set nocount on use ExamSysDB   
  2. go   
  3. select 'bcp ExamSysDB..' + name + ' in C:\BCP\SqlServerOut\'    
  4.     + name + '.bcp -Usa -P -SDEVSERVER -Jcp936 -c '  
  5.   from sysobjects    
  6.  where type='U' and name like '%TB_%'  
  7. go  
set nocount on use ExamSysDB
go
select 'bcp ExamSysDB..' + name + ' in C:\BCP\SqlServerOut\' 
    + name + '.bcp -Usa -P -SDEVSERVER -Jcp936 -c '
  from sysobjects 
 where type='U' and name like '%TB_%'
go


    批量导出数据的参考SQL

Java代码 复制代码
  1. set nocount on use ExamSysDB   
  2. go   
  3. select 'bcp ExamSysDB..' + name + ' out C:\BCP\SqlServerOut\'    
  4.     + name + '.bcp -Usa -Pdbadmin -SDevserver -c '  
  5.   from sysobjects    
  6.  where type='U' and name like '%TB_%'  
  7. go  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics