转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> SyBase >> 正文
关于数据库中有numeric数据类型的字段出现跳号的问题:         ★★★★

关于数据库中有numeric数据类型的字段出现跳号的问题:

作者:闵涛 文章来源:闵涛的学习笔记 点击数:806 更新时间:2009/4/22 23:09:39

环境: WIN2000 ADV , SYBASE12.5 中文版.

数据加工生产库, 白天上班应用,晚上关机.


问题描述: 今天早上开服务器,启动SYBASE服务时,感觉比平时慢了许多.
查看NT日志,有一条'
Sybase SQLServer _ YESKY 服务因 13 服务性错误而停止。 '
晕了,昨天晚上没有服务就关服务器了? 服务起来了,当时检查数据库也没发现什么问题..
上班了,有一道工序的员工反应应用程序出现: 'XX值超出最大范围,请与管理员联系' .   检查相应表里的数据,(该表里有一个字段为numeric,设为自动加1,字段定义为  test1 numeric(10,0) IDENTITY  ,) 表现该字段最大值为5028502,而它下面比它小的那个字段值为28501,将值为5028502的这条记录删除,再来,最大值成了5028503.删了再来,5028504. 不行了,看来出问题了....

经多方求教,问题已经得到解决,现写出对问题的分析及解决办法,共大家参考:

出现这个错误与SYBASE处理IDENTITY的策略有关.SYBASE在启动时会取出一段值放在内存中,IDENTITY是从内存中取的,在关机时,再写回到数据库中,如果非正常关机,则,,,

分析原因:db-server服务器出现故障或用no wait关机。导致分配ID号码块被‘烧毁’,当db-server服务器再次运行时,它会以先前写入磁盘的块的最高号码为基础,开始为下一号码块编号。依据出现故障前被指派到行中的已分配号码的多少,ID号可能会有很大的间隔。 

解决方法:  在该表上加上 with identity_gap = number 参数即可.
with identity_gap 是为表指定标识间距。此值仅替换为此表设置的标识距。
  
执行sp_chgattribute 'table_name','identity_gap',number 
可用sp_help  查看表的identity_gap的设置 

number的值不要设置的过低,会使性能降低 

建议为50,  这样你的数据最大的数据间隔是50


结果: 执行sp_chgattribute 'table_name','identity_gap',number 
      问题解决.

教训:一定要正常关机!


其实,这也是大家帮助我解决的,在些也对你们表示感谢!
本人菜鸟一只,但我一直在努力,学习也是一个过程....

发这个帖子的目的,在于抛砖引玉.
希望大家把平时遇到的问题,即使问题已经解决了,
也整理一下,贴出来,对于自己也是一个总结.
对于大家也是一个学习,交流的机会....
说不定对这个问题,还可以有更好的解决办法呢.

 邱宇杰 回复于:2005-06-28 09:40:20 老兄,请仔细说说他在非法关机后,启动了是如何设置初始值?你说的是“它会以先前写入磁盘的块的最高号码为基础“,请问既然表里没有(已经跳号了所以表中肯定没有这么大)他是如何取到这么大的?难道是把写别的表的块的最高号码写过来了?
  另外问一句,使每一个表都有一块分配号的内存的吧

 camham 回复于:2005-06-28 11:08:08 如果不设置'identity_gap',系统会以一定比例进行跳号,也就是说表越大跳跃值越大,上面的问题也就出现在此。跳跃值最好根据自己的应用设置,例如每次插入100行数据,则设置为100最优。可以略大但不要小了

 robinhunan 回复于:2005-07-04 09:45:01 非常感谢.

关闭本页  


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台