sybase id 跳号解决及备份

1.跳号

意思是指,sybase数据库被非法,如当机,重启,只要不是正常关闭服务,当表id指定identity时候,再次启动sybase,连续的id号,会跳跃相当相当的大。如id = 1,2,3……非法关闭服务后,id跳到50000000000000002。参照一片英文文章解释说,sybase默认会预存一些好。非法关闭,这些信息丢失,造成sybase id只好从预存之后的新id开始。大概就这意思。号跳这么大,基本上这表就算废了。

详细参照:http://www.sybase.com/detail?id=20113

 

解决办法,删除掉,重新建表。这时候,建表的时候,可以如下建立。

Create table mytable (col1 char(10), col2 datetime, col3 numeric(7,0) identity) with identity_gap = 100
即追加补偿
with identity_gap = 100。100的意思是指非法关闭服务器,再次启动,id会跳跃100个,重新开始自增。
这个办法当然有其局限性。在实际应用中,可能会有这样的情况。通过hibernate的mapping文件自动生成数据库表。
这时候,所有的表都没有补偿,这可要了亲命了。这可如何是好呢。
有解决办法:在表建立之初,更新表,加上补偿就行。语法如下:
EXEC sp_chgattribute @tableName,'identity_gap',10
因为表众多,一个个加,岂不是很痛苦,于是乎俺写了个存储过程。如下:
经测试,可用。
2.关于备份
一般sybase安装完,由于我们自定义名字,造成备份失败。
常报错: Can't open a connection to site 'SYB_BACKUP'
利用客户端和语句都不行,原因是备份服务起不来。
解决办法如下:

1.找到安装路径下的(如d盘)   D:/workTools/sysbase/ASE-15_0/install文件下的RUN_XXX_BS.bat文件 打开编辑

2.

D:/workTools/sysbase/ASE-15_0/bin/bcksrvr.exe -SSYB_BACKUP -eD:/workTools/sysbase/ASE-15_0/install/dirful_BS.log
-ID:/workTools/sysbase/ini/sql.ini -MD:/workTools/sysbase/ASE-15_0/bin/sybmbuf.exe -Lus_english -Jcp850

标黑为改正之后的。注意是SSYB.

3..进入到找到安装路径下的   D:/workTools/sysbase/ASE-15_0/install 找到文件RUN_LIUCHONG_BS.bat双击打开运行 运行后 再去进行备份数据库。
这样大概就行了。
-------------------------------------
貌似上面方法不太好用。。。。。。。。。。。。试试以下:
1> sp_dropserver SYB_BACKUP
2> go
Server dropped.
(return status = 0)
1> sp_addserver SYB_BACKUP,null,dirful_BS
2> go
Adding server 'SYB_BACKUP', physical name 'dirful_BS'
Server added.
(return status = 0)
不爱用客户端,可以利用如下语句备份,速度挺快:
dump database dataName to dataName_bk
或者 dump database dataName to "c:/dataName_bk"
保存目录要事先建好才行。
默认备份在sysytem32下面。
---------------------------------

将备份导入到一个空的数据库方法(利用客户端比较简单,点击恢复,写入自己备份路径即可。具体此处略)

#用非导入数据库即可

 

use master

#先查看是否有目标数据库进程活动(如此处的test)

sp_who

#如果有,杀掉。如此处56,没有省略。

kill 56

#改成单用户模式

sp_dboption  test, 'single   user ',true

#加载备份文件

load database test from "c:/cr_bk"

#单用户模式改回

sp_dboption  test, 'single   user ',false

#加载的数据库备份需要online才能正常

online database test

 

 

如上,一切ok了。

 

--------------------BCP备份---------------------

写一个脚本取名bcpscript

 

use cr

go

select 'bcp cr..' + name + ' out c:/cross/' + name + ' -Usa -P -Sdell -c' from sysobjects where type = 'U'

go

---

cmd 的C:/sybase/ASE-15_0/bin下执行:

isql -Usa -P -Sdell -i "c:/bcpscript" -o "c:/bcpout.bat" -w 120

 

cmd下继续执行生成的bcpout.bat即可。

黑色部分为需要修改项。没啥好说的,一看就懂。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值