一、备份和恢复数据库
1) 备份过程
a、备份前一般先清一下日志,可以使得备份出来的完整数据文件最小
dump tran databasename with truncate_only
b、备份
dump database databasename to "d:databakrr_bak.dat"
2) 恢复数据库备份
a) 用isql连接sql server,命令:isql -Usa -P -S Servername.
b) 恢复数据库使用load database命令。其语法为: load database 数据库名 from 转储设备名
比如: load database databasename from "d:databakrr_bak.dat"
c)、将恢复的数据库置成 online
在isql或者Sql advantage中执行:online database retailration。
也可以直接在Sybase Central Java Edition图形化客户端下面操作,完成这步工作。
二、bcp的用法
除了整库的备份/恢复,对于有大量的数据的物理表,可能经常需要使用bcp进行导入导出,sybase的bcp命令和SQL SEVER的类似,其语法大概是:
bcp {[[database_name.][owner].]{table_name | view_name} | "query"}
{in | out | queryout | format} data_file
[-m max_errors] [-f format_file] [-e err_file]
[-F first_row] [-L last_row] [-b batch_size]
[-q] [-C code_page] [-t field_term] [-r row_term]
[-i input_file] [-o output_file] [-a packet_size]
[-S server_name[instance_name]] [-U login_id] [-P password]
[-T] [-v] [-R] [-k] [-E] [-h "hint [,...n]"]
常用的命令方式如下:
1、导出
bcp dbname..tablename out filename -Uusername -P password -Sservername -c -J utf8
2、导入
bcp dbname..tablename in filename -Uusername -P -Sservername -c -J utf8
三、修复identity跳跃的办法
在sybase中用自增加的数字做表的主键的时候,经常会遇到令人头痛的值跳跃问题,ID从几百跳到几百亿、几千亿。原因是Sybase的每次为 identity 种子预先分一个数字段,如果不进行设置的话这个预分的数字段会非常的大,如果运行中Sybase实例出现问题的话,整个预分的数字段都会弃用,从上个数字段最大值之后接着分。针对这个问题,网上有一些解决办法,最简单的就是在建表语句中加入 "with identity_gap=n",为每个表指定每次预分的数字段的长度:
create table TEST(
OID numeric(20) identity,
ITEMCODE numeric(20) not null,
MONTH nvarchar(6) not null,
constraint PK_EITEMFHIS primary key (OID)
) with identity_gap=10
四、清空数据库日志
dump tran databasename with truncate_only
五、identity列增加、修改
1、允许/不允许插入
set IDENTITY_INSERT tablename on
...
set IDENTITY_INSERT tablename off
2、允许/不允许更新
set IDENTITY_UPDATE tablename on
...
set IDENTITY_UPDATE tablename off