В этом разделе перечислены характерные признаки ошибок соединения при использовании DB2 Connect. Для каждой ошибки приводится:
Примечания:
Иногда смысловые коды SNA можно найти в системных журналах. Эта возможность зависит от используемой подсистемы SNA, и в ряде случаев, чтобы получить информацию о смысловом коде, приходится повторно генерировать ошибку при включенной трассировке SNA.
Сообщения SQL0965 и SQL0969 могут посылаться с множеством различных кодов возврата от DB2 Universal Database for AS/400, DB2 Universal Database for OS/390, DB2 for MVS/ESA и DB2 for VM & VSE.
Если вы получили одно из этих сообщений, надо найти исходный код SQL в документации по программному продукту сервера базы данных, который послал сообщение.
Код SQL, полученный от базы данных хоста, не поддается преобразованию. Исправьте ошибку, исходя из ее кода, и повторите невыполненную команду.
Символическое имя назначения не определено или определено неправильно.
Это может произойти, например, при использовании узла APPC, если символическое имя назначения, указанное в каталоге узла DB2, не соответствует записи CPI-C в конфигурации локальной подсистемы связи APPC.
Другая возможная причина - на вашем компьютере установлено несколько стеков SNA. Возможно, надо будет исправить PATH и LIBPATH, чтобы требуемый стек стоял первым.
SQL1403N Неправильные имя пользователя и/или пароль.
Если это так, убедитесь, что в операторе CONNECT пароль указан верно.
В противном случае в записи в каталоге базы данных системы, очевидно, было ошибочно указано AUTHENTICATION SERVER (это значение используется по умолчанию, если параметр AUTHENTICATION не задан явно). В этом случае следует повторно занести запись в каталог с указанием AUTHENTICATION DCS или CLIENT.
Не были успешно запущены системы поддержки одного или несколько протоколов связи. Тем не менее базовые функции менеджера баз данных запущены успешно.
Возможно, на шлюзе DB2 Connect не запущен протокол TCP/IP. До этого соединение с клиентом могло работать нормально.
Если diaglevel = 4, журнал db2diag.log может содержать подобную запись, например:
1997-05-30-14.09.55.321092 Instance:svtdbm5 Node:000 PID:10296(db2tcpcm) Appid:none common_communication sqlcctcpconnmgr_child Probe:46 DIA3205E Адрес гнезда "30090", сконфигурированный в файле служб TCP/IP и необходимый для поддержки сервера TCP/IP, используется другим процессом.
Это предупреждение сигнализирует о том, что DB2 Connect, действующая как шлюз для удаленных клиентов, испытывает затруднения при обработке одного или нескольких клиентских протоколов связи. Это могут быть протоколы TCP/IP, APPC и другие, причем обычно данное сообщение указывает, что один из протоколов связи, определенных для DB2 Connect, сконфигурирован неверно.
Часто это происходит из-за того, что переменная профиля DB2COMM не определена или определена неправильно. В общем случае ошибка возникает из-за несоответствия между переменной DB2COMM и именами, определенными в конфигурации менеджера баз данных (например, svcename, nname, или tpname).
Сообщение об ошибке SQL5043 может быть получено при работе первоначального успешного соединения, в то время как ни одна из конфигураций не изменилась. Это может произойти при использовании протокола TCP/IP, когда удаленная система по какой-то причине ненормально завершает соединение. В этом случае соединение может продолжать существовать на клиенте, и есть вероятность его восстановления без дальнейшего вмешательства в ход сеанса с помощью приведенных ниже команд.
Скорее всего, у одного из клиентов, соединенных со шлюзом, все еще есть хэндл на порте TCP/IP. На каждом клиентском компьютере, который соединен со шлюзом, введите команды:
SQL30020N Выполнение завершилось неудачно из-за ошибки распределенного протокола, которая повлияет на выполнение последующих команд и операторов SQL.
При возникновении этой ошибки необходимо обратиться к службе поддержки.
Посмотрите в каталоге db2dump файл дампа ffdc (pid.000). Затем отформатируйте этот файл дампа командой db2fdump и проверьте, есть ли в полученном файле слово "ERROR". Возможно, в нем будет список MVSD. В этом случае посмотрите дальнейшую информацию на консоли MVS и отыщите код аварийного завершения в руководстве DB2 for MVS Messages and Codes.
SQL30060N "<ID_авторизации>" не имеет полномочий для выполнения операции "<операция>".
При соединении с DB2 for MVS или DB2 for OS/390 таблицы базы данных связей (Communications Database, CDB) не были правильно изменены. Посмотрите книгу
Произошло соединение с неверным хостом или сервером базы данных AS/400 - не удается найти базу данных назначения.
Возможно, в записи каталога DCS указано неверное имя сервера базы данных. В этом случае прикладной программе возвращается код SQLCODE -30061.
Проверьте записи узла DB2 базы данных и каталога DCS. Поле имени базы данных назначения в записи каталога DCS должно соответствовать имени базы данных на этой на платформе. Например, для базы данных DB2 Universal Database for OS/390 используемое имя должно совпадать с именем в поле загрузочного набора данных (Boot Strap Data Set, BSDS) "LOCATION=имя_положения", которое выдается также в сообщении DSNL004I (LOCATION=положение) при запуске DDF.
В вашем руководстве Быстрый старт по DB2 Connect приводятся примеры исправления каталогов DB2. Посмотрите разделы про изменение каталогов DB2 в главах, где описывается конфигурация SNA, или главу "Конфигурирование баз данных хоста и AS/400 для DB2 Connect" и раздел "Конфигурирование соединения TCP/IP".
Правильные команды для узла APPC или APPN:
db2 catalog appc node <имя_узла> remote <имя_символич_назначения> security program db2 catalog dcs database <локальное_имя> as <реальное_имя_базы> db2 catalog database <локальное_имя> as <алиас> at node <имя_узла> authentication dcs
Правильные команды для узла TCP/IP:
db2 catalog tcpip node <имя_узла> remote <имя_или_адрес_хоста> server <номер_порта_или_имя_службы> db2 catalog dcs database <локальное_имя> as <реальное_имя_базы> db2 catalog database <локальное_имя> as <алиас> at node <имя_узла> authentication dcs
После этого, чтобы связаться с базой данных, используется команда:
db2 connect to <алиас> user <имя_пользователя> using <пароль>
Получено сообщение SQL30073 с кодом возврата 119C. Это происходит, когда база данных сервера назначения не поддерживает кодовую страницу, используемую клиентом DB2 (соединяющимся через DB2 Connect). Кодовая страница определяется конфигурацией операционной среды, в которой работает клиент DB2.
Дополнительную информацию смотрите в руководстве Administration Guide.
Эту ошибку часто можно устранить, внеся исправление на системе базы данных сервера назначения. Свяжитесь с вашей обслуживающей организацией, чтобы получить и применить исправления, рекомендованные в этом случае.
В качестве временной меры пользователь может переопределить используемую по умолчанию кодовую страницу, задав переменную среды DB2CODEPAGE. Посмотрите используемую национальную версию или задайте DB2CODEPAGE=850.
На платформах UNIX пользователь может переключиться на другую кодовую страницу, задав новое значение переменной среды LANG.
Признак этой ошибки - получение следующего сообщения со смысловым кодом SNA:
db2 connect to <имя_базы_данных> user <ID_пользователя> Введите пароль для <ID_пользователя>: SQL30081N Ошибка связи. Используемый протокол связи: "APPC". Используемый интерфейс API связи: "CPI-C". Место, где обнаружена ошибка: "". Функция связи, обнаружившая ошибку: "cmallc". Коды ошибки протокола связи: "1", "*", "0x10030021". SQLSTATE=08001
В данном примере смысловой код - 10030021.
Ниже приводятся часто встречающиеся с этим сообщением смысловые коды и предлагаемые в каждом случае решения:
SQL30081N с кодом возврата 1 и смысловым кодом SNA 0877002C
Указано неверное сетевое имя.
SQL30081N с кодом возврата 1 и смысловым кодом SNA ffff0003
Указан неверный адрес MAC или связь SNA неактивна.
SQL30081N с кодом возврата 1 и смысловым кодом SNA 10030021
Не совпадает тип LU.
SQL30081N с кодом возврата 1 и смысловым кодом SNA 084B6031
Задано нулевое значение MAXDBAT в DSNZPARM (в DB2 for MVS или DB2 for OS/390)
Другие советы:
Получено сообщение SQL30081N с кодом возврата 2 и смысловым кодом SNA 08120022.
Для параметра NUMILU в NCP (со стороны хоста), возможно, задано значение по умолчанию (0). Проверьте, так ли это. При необходимости измените определение NCP и повторите попытку после того, как изменение вступит в силу.
Признак - получение следующего сообщения (смысловой код SNA в этом случае не требуется):
db2 connect to <база_данных> user <ID_пользователя> SQL30081N Ошибка связи. Используемый протокол связи: "APPC". Используемый интерфейс API связи: "CPI-C". Место, где обнаружена ошибка: "". Функция связи, обнаружившая ошибку: "cmsend". Коды ошибки протокола связи: "9", "*", "0x10086021". SQLSTATE=08001
Причина ошибки заключается в том, что имя программы транзакции (TPNAME) неверно определено в системе DB2 Connect. Например, конфигурация SNA изменена, но еще не проверена на шлюзе DB2 Connect. Подробности смотрите в руководствах DB2 Connect Enterprise Edition for OS/2 and Windows Quick Beginnings или DB2 Connect Personal Edition. Быстрый старт.
Признак - получение следующего сообщения (смысловой код SNA не требуется):
SQL30081N Ошибка связи. Используемый протокол связи: "APPC". Используемый интерфейс API связи: "CPI-C". Место, где обнаружена ошибка: "". Функция связи, обнаружившая ошибку: "cmrcv". Коды ошибки протокола связи: "10", "*", "*". SQLSTATE=08001
Убедитесь, что DB2 установлена правильно.
Если используется шлюз DB2 Connect для OS/2, при неправильном задании имени программы транзакции можно получить следующее сообщение:
Коды ошибки протокола связи: "10", "*", "0x084C0000". SQLSTATE=08001
В CM/2 в этом случае имя надо определить так:
Transaction program name = 'tpname' (user defined) OS/2 program path and file name = notused
и (на следующем экране конфигурирования CM/2)
Presentation type - background Operation type - Queued, operator preloaded
SQL30081N Ошибка связи. Используемый протокол связи: "APPC". Используемый интерфейс API связи: "CPI-C". Место, где обнаружена ошибка: "". Функция связи, обнаружившая ошибку: "xcstp". Коды ошибки протокола связи: "20", "*", "*". SQLSTATE=08001
Убедитесь, что в системе DB2 Connect запущена подсистема SNA.
Получено сообщение SQL30081N с кодом возврата 27 и смысловым кодом SNA 800Axxxx.
Слишком длинный блок информации о пути (PIU) VTAM.
SQL30081N Ошибка связи. Используемый протокол связи: "TCP/IP". Используемый интерфейс API связи: "SOCKETS". Положение, где обнаружена ошибка: "". Функция связи, обнаружившая ошибку: "connect". Коды ошибки протокола связи: "79", "*", "*". SQLSTATE=08001
Эта ошибка происходит, если удаленному клиенту не удается соединиться со шлюзом DB2 Connect. Она может также произойти при соединении с хостом со шлюза DB2 Connect.
db2 update dbm cfg using diaglevel 4После остановки и перезапуска DB2 просмотрите файл db2diag.log и проверьте, была ли запущена связь DB2 TCP/IP. На выходе должно появиться сообщение следующего типа:
1998-02-03-12.41.04.861119 Instance:svtdbm2 Node:00 PID:86496(db2sysc) Appid:none common_communication sqlcctcp_start_listen Probe:80 DIA3000I Поддержка протокола "TCPIP" запущена успешно.
SQL30081N Ошибка связи. Используемый протокол связи: "TCP/IP". Используемый интерфейс API связи: "SOCKETS". Положение, где обнаружена ошибка: "". Функция связи, обнаружившая ошибку: "send". Коды ошибки протокола связи: "10032", "*", "*". SQLSTATE=08001
Это сообщение об ошибке может быть получено при попытке рассоединения с компьютером, связь TCP/IP с которым уже была разорвана. Исправьте ошибку с помощью подсистемы TCP/IP.
На большинстве компьютеров для исправления этой ошибки достаточно перезапустить протокол TCP/IP. В некоторых случаях может потребоваться перезапуск всего компьютера.