DB2DataAdapter.Fill(dataset) 抛出错误“SQL0901N(原因“CPF4273”。)SQLSTATE=58004”
Posted
技术标签:
【中文标题】DB2DataAdapter.Fill(dataset) 抛出错误“SQL0901N(原因“CPF4273”。)SQLSTATE=58004”【英文标题】:DB2DataAdapter.Fill(dataset) throws error "SQL0901N (Reason "CPF4273".) SQLSTATE=58004" 【发布时间】:2011-10-14 11:48:27 【问题描述】:我的应用程序是基于 Dot Net 的。我正在使用 VS 我的应用程序在其后端使用 IBm DB2。 我的查询是
SELECT A, B FROM SERVER.D WHERE A IN
(SELECT C FROM SERVER.E WHERE X = '01OBPP' AND Y= 'U' AND Z= '1')
A、B、C、X、Y、Z-列名、服务器-服务器名、D 和 E-表名
PFB 代码-
DB2DataAdapter dbAdapter = null;
DB2Connection dbConn = null;
DB2Command dbCommand;
DataSet dsReturnDataSet ;
dbConn = new DB2Connection(connectionString);
if (dbConn.State == ConnectionState.Closed) dbConn.Open();
dsReturnDataSet.Clear();
dbCommand = GetCommand();
dbCommand.CommandText = queryString;
dbCommand.Connection = dbConn;
dbAdapter = new DB2DataAdapter((DB2Command)dbCommand);
dbAdapter.Fill(dsReturnDataSet);
return dsReturnDataSet;
GetCommand() 方法有如下语句
DB2Command dbCommand;
dbCommand = null;
dbCommand = new DB2Command();
dbCommand.CommandType = CommandType.Text;
dbCommand.CommandTimeout = 30;
return dbCommand;
当它到达“dbAdapter.Fill(dsReturnDataSet);”行时它卡在那里很长时间,然后抛出错误
"ERROR [58004] [IBM][AS] SQL0901N SQL 语句失败,因为 非严重的系统错误。可以处理后续的 SQL 语句。 (原因“CPF4273”。)SQLSTATE=58004"
请提供一些指示。 如果有人能提供一些关于如何解决此错误的指示,我将不胜感激。
【问题讨论】:
【参考方案1】:检查您的数据库日志。实例的sqllib
目录下的db2dump
目录中应该有一个db2diag.log
文件。在此文件中搜索上述错误,它应该包含它所指的根本原因(非严重系统错误)。
【讨论】:
您好 inflagranti,感谢您的更新。我找到了 SQLLIB,但找不到 db2diag.log。我做了一些冲浪,发现我的 DIAGPATH 是空的,diaglevel 是 3。关于我应该在哪里查看或应该将 diagpath 更改到某个本地位置并重新运行查询以在 db2diag.log 中记录缺陷的任何指针// @Ayoti:您可能必须重新启动 DB2 服务才能使该更改生效。我不会将 diaglevel 设置为 3 以上,因为它只会填满您的日志。查看文档 (publib.boulder.ibm.com/infocenter/db2luw/v9r5/…) 了解更多信息。 因为(Reason "CPF4273".)
,看来这是一个远程DB2 for i 数据库。因此,将没有“db2diag.log”、任何“db2dump 目录”或任何“实例的 sqllib 目录”。 “CPF4273”是发生错误的一般指示,应检查作业日志以查看所有以前记录的消息。以上是关于DB2DataAdapter.Fill(dataset) 抛出错误“SQL0901N(原因“CPF4273”。)SQLSTATE=58004”的主要内容,如果未能解决你的问题,请参考以下文章