DB2DataAdapter.Fill(набор данных) выдает ошибку SQL0901N (причина CPF4273.) SQLSTATE=58004

Мое приложение основано на 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-ИМЯ ТАБЛИЦЫ

ПФБ код-

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);' он зависает там очень долго и после этого выдает ошибку

"ОШИБКА [58004] [IBM][AS] SQL0901N Оператор SQL завершился неудачно из-за несерьезной системной ошибки. Последующие операторы SQL могут быть обработаны. (Причина "CPF4273".) SQLSTATE=58004"

Пожалуйста, дайте несколько указателей. Я буду очень признателен, если кто-нибудь может дать несколько советов о том, как решить эту ошибку.


person Ayoti    schedule 14.10.2011    source источник


Ответы (1)


Проверьте журнал базы данных. В каталоге db2dump каталога sqllib экземпляра должен быть файл db2diag.log. Найдите в этом файле вышеуказанную ошибку, и он должен содержать основную причину (эта несерьезная системная ошибка), на которую он ссылается.

person Janick Bernet    schedule 14.10.2011
comment
Привет inflagranti, Спасибо за обновление. Я обнаружил SQLLIB, но не смог найти файл db2diag.log. я немного поискал и обнаружил, что мой DIAGPATH пуст, а diaglevel равен 3. ЛЮБОЙ указатель на то, где я должен искать, или я должен изменить diagpath на какое-то локальное место и повторно запустить запрос, чтобы зарегистрировать дефект в db2diag.log. // - person Ayoti; 14.10.2011
comment
@Ayoti: вам, вероятно, придется перезапустить службу DB2, чтобы это изменение стало активным. Я бы не стал устанавливать diaglevel выше 3, так как он просто заполнит ваш лог. Ознакомьтесь с документацией ( publib.boulder.ibm.com/infocenter/db2luw/v9r5/) для получения дополнительной информации. - person Janick Bernet; 14.10.2011
comment
Из-за (Reason "CPF4273".) кажется, что это удаленная база данных DB2 for i. Таким образом, не будет ни db2diag.log, ни каталога db2dump, ни каталога sqllib экземпляра. CPF4273 является общим индикатором того, что произошла ошибка и что необходимо просмотреть журнал заданий, чтобы увидеть все ранее зарегистрированные сообщения. - person user2338816; 27.04.2016