DB2 V8 更新包带来的困扰
随着DB2版本的不断更新,DB2 v8版本已更新至补丁包fixpack16,打上该补丁包之后最终版本变成:8.2.9,版本是更新了,可能IBM在每一个补丁包里面都会对稳定性和可用性有所增强,但是这同时也带来了一些与老版本客户机的不兼容情况。由于服务器被木马搞到起不了,由于只有重装服务器,重新做集群,原来的DB2版本为V8.1 到IBM网站看到有更新,由于决定连DB2版本也更新至最新版本,所有安装工作还算顺利。完成服务器部署之后使用原来的程序连接至服务器,出现如下错误:
DB_E_OBJECTOPEN(0x80040E05)
后来一想,可能是更新补丁包导致的错误,又是将客户机装上与服务器相同的补丁包,错误消失。在google上查看,得到如下信息:
We installed UDB 8.2 FixPak 7a on the client machine (the Web server), which
solved the problem. The steps we went through included rolling back .NET
Framework 1.1 SP 1, which eliminated the problem. We reinstalled .NET
Framework 1.1 SP 1, which caused the problem again. Finally, we installed
DB2 8.2 FixPak 7a, which eliminated the problem again.
The moral of the story appears to be that if you're using an
OleDbDataAdapter to talk to a DB2 database, you should apply both .NET
Framework 1.1 SP1 and DB2 8.2 FixPak 7a at the same time to avoid
DB_E_OBJECTOPEN errors
于是,更加确认我的猜测是正确的,之后将所有的客户机装上fixpack16补丁,系统恢复正常运行。
由于IBM发布DB2补丁包都是一个累计更新包,因此可以使用跳跃式直接更新至最新版本,如果DB2是由fixpack10之前的版本更新至fixpack10及其之后的版本,那么在客户机连接至服务器时会发生异常,同时在客户机上将得到信息:SQL0443N SQLSTATE=38553 ,同时这个错误只对服务器有影响,对于客户机是没有影响的,要解决此问题,我们必须在服务器上做如下工作:
Bind db2schema.bnd to existing databases
After installation on the server, an additional bind file needs to be
bound to existing databases. This requirement does not apply to clients.
Procedure
To bind db2schema.bnd on the server, execute one of these command
sequences:
At a command prompt:
db2 terminate
db2 CONNECT TO <dbname>
db2 BIND <path>/db2schema.bnd BLOCKING ALL GRANT PUBLIC sqlerror continue
db2 terminate
或者做以下操作
At the DB2 command line:
TERMINATE
CONNECT TO <dbname>
BIND <path>/db2schema.bnd BLOCKING ALL GRANT PUBLIC sqlerror continue
TERMINATE
where <dbname> represents the name of a database to which the utilities
should be bound, and where <path> is the full path name of the directory
where the bind files are located.
手工绑定之后,重新启动服务就可。
页:
[1]