Sybase自增字段跳号的解决方法

Sybase自增字段跳号原因及影响:

在Sybase数据库中如果数据库在开启的情况下,因为非正常的原因(死机、断电)而导致数据库服务进程强制结束。

那么自动增长的字段将会产生跳号的情况,再往数据表里面插入记录时,自增字段会跳到一个相当大的值上面,以至于主键的自增值极有可能被用尽,或由于数值太大,应用程序中的数据类型如int型等已无法容下这么大的值,而无法在程序里面进行相关的操作。

Sybase自增字段跳号解决办法:

如下:sybase在执行shutdown with nowait,再重启后,原来的ID值出现跳号。

如何关闭sybase时执行shutdown时,则不会出现跳号情况。

如果还未发生过跳号情况,可按如下办法解决:

1.执行 sp_chgattribute 表名, 'identity_gap', 100  

其中的100是凭感觉给的一个值,一般来说这个值越大性能越好,但越大,再发生数据库服务进程非正常结束时,所跳的号也就越大。

2. 若已经发生跳号,需要将表中数据bcp导出,再重建数据表,再执行1。再bcp命令导入数据。

后话:

Sybase自增字段有个最大的问题是,再移植数据库时,如果是按自增主键进行关联的数据表,在数据重新导入后,可能出现主从表的外键无法关联的情况,我是开始时没预料到这样的情况,现木已成舟,没有办法了。 以后还是要慎用自增字段作为主键。

《FROM:http://database.51cto.com/art/201011/235579.htm http://blog.sina.com.cn/s/blog_499ab6b20100xipp.html》

posted on 2015-09-17 11:36  遠離塵世の方舟  阅读(802)  评论(0编辑  收藏  举报

导航