Дополнение по возможностям соединений

Дополнительные вопросы связи DB2 Universal Database for AS/400 с DB2 Universal Database

В этом разделе обсуждаются некоторые дополнительные особенности операций SQL между DB2 Universal Database for AS/400 и DB2 Common Server, Версия 2 или DB2 Universal Database. Дальнейшее обсуждение касается DB2 for OS/2, но в большинстве случаев подобные соображения применимы и для DB2 Common Server, Версия 2 и DB2 Universal Database на других платформах:

  1. В AS/400 к именам таблиц добавляется имя собрания (или имя библиотеки); они помещаются в базу данных DB2 Universal Database for AS/400 (одна база данных на систему AS/400). В отличие от этого на PC к именам таблиц добавляется ID пользователя (создателя таблицы); таблицы помещаются в отдельные базы данных (на PC с DB2 for OS/2 может находиться несколько баз данных).
    1. Это означает, что в запросе от DB2 for OS/2 (через DB2 Connect) в DB2 Universal Database for AS/400, если имя запрашиваемой таблицы было задано без имени собрания, в качестве имени собрания (по умолчанию) будет использоваться ID пользователя задания стороны назначения (то есть AS/400). Об этом надо помнить, иначе таблица может быть не найдена.
    2. Это также означает, что запрос от DB2 Universal Database for AS/400 в DB2 for OS/2 будет содержать неявный спецификатор таблицы, если он не задан в запросе (в форме 'спецификатор.имя-таблицы'). В DB2 for OS/2 спецификатор таблицы (который реквестер программ AS/400 задает как имя собрания или библиотеки) по умолчанию - это ID пользователя, делающего запрос. И в этом случае требуется осторожность, иначе таблица может быть не найдена.
    3. Может потребоваться создать базы данных и таблицы DB2 for OS/2 с общим ID пользователя. В DB2 for OS/2 это не физическое собрание, как в DB2 Universal Database for AS/400, а спецификатор таблицы - ID пользователя ее создателя.
  2. Если DB2 for OS/2 будет использоваться как клиент с протоколом DRDA, требуется DB2 Connect (или DDCS). DB2 Connect (DDCS) не требуется, если DB2 for OS/2 будет использоваться только как сервер.
  3. Очень важно правильно сконфигурировать DB2 Connect:
    1. Убедитесь, что у вас установлены последние версии DB2 for OS/2 и DB2 Connect. Примените все последние исправления, если вы еще этого не сделали.
    2. Следуйте инструкциям по установке и конфигурированию в руководствах.
  4. При использовании APPC нужно обратить особое внимание на правильное конфигурирование соединений с контроллером и устройством, созданным для PC, если DB2 for OS/2 используется как реквестер или как сервер программ. Кроме того, независимо от используемого протокола связи, в каталоге RDB должна быть запись для каждой базы данных DB2 for OS/2, с которой будет соединяться AS/400.

    Чтобы установить соединения APPC, выполните следующие действия:

    1. Описания устройства и контроллера можно создать вручную. Можно также поручить создание этих описаний системе, если вы работаете в сети Token Ring и параметр описания линии связи AUTOCRTCLT имеет значение *YES. Чтобы посмотреть описание линии связи, в команде WRKLIND выберите опцию 2 Change (изменить). Спуститесь до параметра 'Autocreate controller' (автоматическое создание контроллера) и посмотрите значение AUTOCRTCLT.

      Если система будет создавать контроллеры автоматически, можно запустить создание необходимых описаний контроллеров. Из папки CM/2 в OS/2 запустите Start Communications и выберите Subsystem Management. В Subsystem Management посмотрите сведения о подсистеме SNA. Здесь можно посмотреть логические связи. Чтобы автоматически создать контроллер, откройте Logical Links и активируйте связь с желаемой системой. Описание контроллера будет автоматически создано позже.

    2. Чтобы сетевое соединение между системами работало, устройство и контроллер для PC на системе AS/400 должны быть активны. Для параметра SWTDSC в описании контроллера можно установить значение *NO, тогда активные контроллеры останутся активными. Для параметра ONLINE можно установить значение *YES, тогда контроллер будет активирован при начальной загрузке. (В описании устройства для параметра ONLINE может также потребоваться установить значение *YES.) Обратите внимание на то, что для изменения параметров в описании контроллера нужно ОТКЛЮЧИТЬ контроллер и установить в качестве его владельца (параметр CTLOWN) значение *USER.
    3. Чтобы добавить запись в каталог RDB для каждой базы данных DB2 for OS/2, с которой будет соединяться AS/400, воспользуйтесь командой ADDRDBDIRE: имя RDB - это имя базы данных DB2 for OS/2, а имя удаленного положения - имя рабочей станции.
  5. Для каждой таблицы (физического файла) AS/400, используемой в DB2 for OS/2, надо верно задать значение CCSID (при использовании американского варианта английского это обычно 37). Посмотреть значение CCSID можно с помощью DSPFD, а изменить значение CCSID для физических файлов - с помощью CHGPF. Кроме того, для успешного соединения может потребоваться изменить один из следующих параметров: CCSID задания, используемый профиль пользователя или значение CCSID системы (QCCSID), если для него установлено значение по умолчанию 65535. Как правило, лучше всего внести изменения в профиль пользователя, с которым будет запускаться задание сервера.
  6. Перед использованием DB2 Connect совместно с сервером AS/400 надо создать в AS/400 пакеты SQL для прикладных программ и утилит DB2 Connect.
    1. Для обработки исходного файла программы со встроенным SQL можно использовать команду DB2 PREP. При этом создается измененный исходный файл, содержащий вызовы языка хоста для операторов SQL, и, по умолчанию, пакет SQL в базе данных, с которой в это время установлено соединение.
    2. Чтобы связать утилиты DB2 Connect с каким-либо сервером DB2 AS/400, введите команды:
      1.    CONNECT TO имя-rdb
        
      2.    BIND путь@DDCS400.LST BLOCKING ALL SQLERROR CONTINUE
                    MESSAGES DDCS400.MGS GRANT PUBLIC
        

        Замените в приведенном примере путь в путь@DDCS400.LST на путь по умолчанию C:\SQLLIB\BND\ или на ваше локальное значение, если при установке вы изменили положение по умолчанию.
        Прим.:В OS/400 V3R1 надо применить исправление (PTF) SF23624, чтобы не получить код SQL -901 от базы данных DB2 Universal Database for AS/400 для третьего файла связывания в списке.

      3.    CONNECT RESET
        
  7. Для интерактивного SQL от DB2 Universal Database for AS/400 к DB2 for OS/2:
    1. Установите атрибуты сеанса NAMING(*SQL), DATFMT(*ISO) и TIMFMT(*ISO). Кроме *ISO, работают и другие форматы (но не полностью); формат, используемый для даты (DATFMT), должен использоваться и для времени (TIMFMT).
    2. Обратите внимание на соответствие между собраниями в AS/400 и спецификатором таблицы (ID пользователя создателя) в DB2 for OS/400. Смотрите пункт 1 в списке вопросов по операциям SQL.
    3. Для самого первого интерактивного сеанса для управления принятием НАДО задать также COMMIT(*CS), а затем (1) RELEASE ALL, (2) COMMIT и (3) CONNECT TO имя-rdb (где 'имя-rdb' - имя конкретной базы данных). Чтобы пакетом SQL, созданным на PC для интерактивного SQL, могли пользоваться другие пользователи, можно задать GRANT EXECUTE ON PACKAGE QSQL400.QSQL0200 TO PUBLIC (или конкретным пользователям).
  8. Для любых программ, созданных в AS/400 и обращающихся к базе данных DB2 for OS/2, не забудьте использовать следующие команды DB2 for OS/2:
    1.    GRANT ALL PRIVILEGES ON TABLE имя-таблицы TO пользователь
      
    2.    GRANT EXECUTE ON PACKAGE имя-пакета (обычно имя программы
           AS/400) TO пользователь
      

      В качестве пользователя можно задать 'PUBLIC'.

  9. В версиях программ AS/400 с доступом к DB2 for OS/2 (версия 2.1.1 и более ранние) в ответ на команду CRTSQLxxx выдавалось сообщение (SQL5057) указывавшее, что пакет SQL создан на PC, даже если пакет не был создан. Это исправлено в последней версии DB2 for OS/2.

    Кроме того, в предыдущих версиях DB2 for OS/2 нельзя было создать пакеты SQL для программ OS/400, у которых в текстовом поле описания исходного члена что-либо было записано.

  10. Хранимые процедуры языка C в DB2 for OS/2 не могут использовать в качестве параметров argc и argv (то есть не могут быть типа main()). В отличие от этого хранимые процедуры AS/400 должны использовать argc и argv. Примеры хранимых процедур для DB2 for OS/2 смотрите в подкаталоге \SQLLIB\SAMPLES. Посмотрите также OUTSRV.SQC и OUTCLI.SQC в подкаталоге C.
  11. Имена хранимых процедур в DB2 for OS/2, вызываемых AS/400, задаются в верхнем регистре. AS/400 в настоящее время переводит имена процедур в верхний регистр. Это означает, что процедура на PC с тем же именем в нижнем регистре не будет найдена. Помните, что имена хранимых процедур в AS/400 должны задаваться в верхнем регистре.
  12. Без соответствующего исправления PTF для встроенного SQL оператор вызова из AS/400 в DB2 for OS/2 будет работать только, если имя процедуры поместить в переменную хоста (CALL :имя-процедуры-хоста(...)). Для V3R7 требуется исправление PTF SF35932. Для V3R2 требуется исправление PTF SF35935.
  13. Хранимые процедуры в AS/400 не могут содержать оператор COMMIT, если они создаются для запуска в той же группе активации, что и вызывающая программа (правильный способ их создания). Однако в хранимые процедуры для DB2 for OS/2 разрешается включать COMMIT, но при разработке программы надо учитывать, что в DB2 Universal Database for AS/400 не будет информации о том, что произошло принятие.


[ Начало страницы | Страница назад | Страница вперед | Содержание | Индекс ]