sybase 常用命令总结

来源:互联网 发布:怎样投诉农村淘宝服务 编辑:程序博客网 时间:2024/06/05 10:57
                                                                       sybase 常见问题

 ------------------------0.00下面是设置字符集的过程:中文乱码问题----------------------------------------------
1、安装完Sybase后,如果要想设置字符集为CP936,就必须先安装该字符集,因为Sybase默认的字符集表中并没有该字符集,安装步骤如下:
(这里 SYBASE的安装路径为c:\sybase)   
1.c:\>;cd \sybase\charsets\cp936  
 2.c:\sybase\charsets\cp936>; charset -Usa -Psa_pass -Sserver_name binary.srt cp936通过上述命令就成功将CP936字符集安装表Sybase的系统字符集表中
但必须重启Sybase服务两次才能看到结果,可以通过查看 master数据库中的syscharsets表查看是否已经安装成功,我们可以看到已经安装成功了:select name,id from syscharsets;
1002,171,0,1,’cp936’, ’CP936 (Simplified Chinese).’,’…’
 
2、看到CP936的编号为171,我们需要在Sybase的属性中设置系统字符集为该ID,如下图所示:sp_configure "default character set id",171
---------------------------------------0.01解决sybase 字符大小写敏感问题----------------------------------------------------------------------------
(我们默认字符集为cp936)因为我们默认安装了nocase_cp936  所以不用安装修改默认排序即可(如果没装需安装对应的字符集的大小写不敏感排序crt类似:c:\sybase\charsets\iso_1>charset -Usa -P -Stest nocase.srt iso_1)
sp_configure  “default sortorder id”,52
用sp_helpsort查看:结果为:

Character Set = 171, cp936       
    CP936 (Simplified Chinese).       
    Class 2 Character Set       
Sort Order = 52, nocase_cp936       
    General-purpose case-insensitive dictionary ordering       


------------------------0. 删除数据库--------------------------
    USE master
    go
    drop database test
    go
------------------------1.创建数据库-------------------------------------------------
1.创建数据库
--步骤1================================  使用master库
 use master         
 go
--步骤2============================  创建设备
disk init
    name="coe",      ---设备名
    physname="C:\sybase\data\coe.dat",  ---设备存储路径
    size="100M",dsync = 'false'   ---设备大小及向备盘上写数据时,是否需上catch缓冲,dsync=true的时候不通过OS的buffercache,直接写盘,当然会慢,dsync=false的时候,是会使用OS的buffercache,但可靠性会差一些
 go
--步骤3====================== 创建日志设备
disk init
   name="coe_LOG",
    physname="c:\sybase\data\coe_LOG.dat",
    size="50M",dsync = 'false'

 go
 --步骤4 ====================== 创建数据库
 CREATE DATABASE coe
        ON coe = '100M'
       
    LOG ON coe_LOG = '50M'
go

---------------------2.数据库备份及恢复--------------------------------------------------
(1):备份(恢复)单表   (命令行 不是isql)只需要使用sybase提高的bcp命令就可以了:
     bcp的命令格式:
     bcp 数据库名..表名 in/out 文件名字 -Usa –Ppassword -S SERVERNAME –c(in 为恢复 out 为备份)
     从'aws'库备份单表('test')例子:
     bcp aws..test in c:/t.txt -Usa -P -S -c
     ------------------------------
        bcp 导入问题
        恢复单表('test')到'bk'库例子:
        bcp bk..test in c:/t.txt -Usa -P -S -c
        可能遇到问题:You cannot run the non-logged version of bulk copy in this database. Please check with the DBO.
            原因是select into/bulkcopy没有打开
            方法:
            use master
            go
            sp_dboption YourDB,”select into/bulkcopy”,true
            go
            use YourDB
            go
            checkpoint
            go
                
(2):备份整个库
    1:确定启动了sybase 备份服务 'Sybase BCKServer _ TESTVMWIN2003_BS'
    备份:
        isql -U sa -P -S 192.168.0.25:5000
        Dump database aws to 'c:aws.dump'
        go
    -----------------
    恢复整个库:
       isql -U sa -P -S 192.168.0.25:5000
       load database 数据库名 from 'c:/JbpmTAStandard.dump'
       (确保空间放得下)
       恢复后要用命令激活一下:
      isql>online database 数据库名字
      isql>go
----------------------------3.添加用户并授权------------------------------------------------
    sp_addlogin zz, zz123456
    go
    sp_adduser zz
    go
    sp_role "grant",sa_role,zz
    go
------------------解决日志满了的问题 导致建数据库 简表等都建不了 卡住-------------------------
Can't allocate space for object 'syslogs' in database 'master' because 'logsegment' segment is full/has no free extents.
If you ran out of space in syslogs, dump the transaction log. Otherwise, use ALTER DATABASE or sp_extendsegment to increase size of the segment.
解决:
 dump tran master with no_log
 go
dump transaction master with truncate_only
 go

------------------------常用工具语句-----------
        ----------------查看谁在链接sybase -------------
        select spid,hostname,loggedindatetime,ipaddr from master.dbo.sysprocesses where db_name(dbid)='数据库名'
        ---------------杀掉指定的 sybase连接--------------
        select 'kill '+convert(varchar,spid) from master.dbo.sysprocesses where db_name(dbid)='数据库名'
        -------------------

        ----------------查看sybase 所有表-------------------------
        Select   *   from   sysobjects   where   type='U'
        可查看已安装的所以字符集
        select name,id from syscharsets

        -----------可设置默认字符集------------------
        sp_configure "default character set id",字符集编号
        -------查看客户端编码--------
        select @@client_csname  
        --------查看服务端编码----------------------
        sp_helpsort
        ---sybase 字符串转日期-----
        select * from wf_task_log where wfid=12037 and endtime >= convert(datetime, '2012-09-28 ') and endtime<=convert(datetime,'2012-09-28 ');
        sybase  外连接写法
         select   *   from   a,b  
         where   a.id   *=b.id    查出a的所有记录  没匹配的b b为null
        
         类似oracle的写法
         select   *   from   a,b  
         where   a.id   =(+)   b.id
        ----------------查看sybase 版本---------------------
        select @@version
        ------------------解决DBArtisian  查询sybase乱码问题-----------------------
        我们的sybase 是cp936(简体中文)  编码 option ->connection ->编码改为cp936