您的位置:首页 > 其它

sybase 常用命令总结

2012-10-12 17:42 393 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: