DB2返回SQLCODE,第1张

当我从事基于DB2的嵌入式C语言项目时,发生了一件非常奇怪的事情。我来和大家分享一下。

当时为了保持测试数据的完整性和开发者数据的一致性,也为了减轻DBServer的压力,开始了每两个人做一个DB实例的噩梦。

每次代理A编译程序并开始运行时,使用同一个DB实例的代理B也开始编译并运行。此时,代理A将报告一个错误,如“sql0818n出现时间戳冲突”于是,A开始重新编译,运行,ok,开始测试,然后B会报告A刚刚报告的错误。

当时,由于我是DB2新手,不熟悉它的嵌入式开发原理,我认为DB2或客户机有问题,所以我卸载了Quest Central并重新安装了DB2。一直没有解决问题。

后来通过查找资料,总结,终于找到了原因。下图显示了创建包的过程。

因为只有段条目用于标识应用程序中的上下文,所以修改后的源文件和包被紧密地链接在一起,并且必须确保它们总是指向相同的上下文。这是通过在修改后的源文件中嵌入一致性标记(也称为“时间戳”)并在DB2UDB的包信息中存储相同的值来实现的。来自应用程序的每个请求都标记有这种一致性,传入的值与目录表中的值进行比较。如果这两个值不同,并且加载的模块的时间戳与一致性标志不同,那么将出现“时间戳”错误(SQLCODE -818)。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » DB2返回SQLCODE

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情